using Dapper;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.Linq;

namespace Wetterstation
{
    //Hier werden die Datenbankzugriffe fuer die frontend.db geregelt
    public static class SqliteDataAccess
    {
        public static SQLiteConnection _dbConnection;

        //Settings aus der Datenbank auslesen
        public static SettingsModel LoadWeatherstationSettings()
        {
            using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
            {
                var output = cnn.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;");
                return output.FirstOrDefault();
            }
        }

        //Settings in der Datenbank abspeichern 
        public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
        {
            using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
            {
                cnn.Execute("UPDATE settings " +
                    "SET mqtt_host = @mqtt_host, " +
                        "mqtt_user = @mqtt_user, " +
                        "mqtt_pass = @mqtt_pass, " +
                        "mqtt_topic_frontend = @mqtt_topic_frontend, " +
                        "mqtt_topic_backend = @mqtt_topic_backend, " +
                        "mqtt_qos = @mqtt_qos, " +
                        "mqtt_timeout = @mqtt_timeout, " +
                        "mqtt_port = @mqtt_port, " +
                        "frontendId = @frontendId, " +
                        "lngCode = @lngCode, " +
                        "plz = @plz, " +
                        "city = @city, " +
                        "node1Id = @node1Id, " +
                        "node1Innen = @node1Innen, " +
                        "node1Aussen = @node1Aussen;",
                    mqttSettings);
            }
        }

        //holt den ConnectionString aus der App.config (siehe ProjektmappenExplorer)
        private static string LoadConnectionString(string id = "Default")
        {
            return ConfigurationManager.ConnectionStrings[id].ConnectionString;
        }
    }
}