using HighWayIot.Common;
using HighWayIot.Log4net;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HighWayIot.Repository
{
    internal class SqlSugarHelper //不能是泛型类
    {
        private static LogHelper logHelper = LogHelper.Instance;

        private static JsonChange jsonChange = JsonChange.Instance;

        #region 连接字符串
        /**
         * Sqlite:获取debug路径下的数据库文件，不建议直接写死路径
         * private static string sqliteConnStr = $"Data Source={Path.GetFullPath("data\\data.db")};Version=3";
         */
        //private static string sqliteConnStr = "Data Source=Z:\\Desktop\\日常代码\\HighWayIot\\HighWayIot\\bin\\Debug\\data\\data.db;Version=3";

        ///**
        // * Mysql
        // */
        //private static string mysqlConnStr = "Data Source=124.70.63.37;Port=6000;Initial Catalog=ry-cloud;uid=root;pwd=haiwei@123;Charset=utf8mb4;SslMode=none";

        //private static string oracleConnStr = "Data Source=175.27.215.92/helowin;User ID=aucma_mes;Password=aucma";
        private static string SqlServerConnStr = "server=127.0.0.1;uid=sa;pwd=123456;database=dlml_scada";
        #endregion

        //如果是固定多库可以传 new SqlSugarScope(List<ConnectionConfig>,db=>{}) 文档：多租户
        //如果是不固定多库 可以看文档Saas分库

        //用单例模式
        public static SqlSugarScope Db = new SqlSugarScope(new List<ConnectionConfig>()
        {
            //new ConnectionConfig()
            //{
            //    ConfigId = "sqlite",
            //    ConnectionString = sqliteConnStr,
            //    DbType = DbType.Sqlite,
            //    InitKeyType = InitKeyType.Attribute,
            //    IsAutoCloseConnection = true
            //},
            //new ConnectionConfig()
            //{
            //    ConfigId = "mysql",
            //    ConnectionString = mysqlConnStr,
            //    DbType = DbType.MySql,
            //    InitKeyType = InitKeyType.Attribute,
            //    IsAutoCloseConnection = true
            //},
            new ConnectionConfig()
            {
                ConfigId = "sqlserver",
                ConnectionString = SqlServerConnStr,
                DbType = DbType.SqlServer,
                InitKeyType = InitKeyType.Attribute,
                IsAutoCloseConnection = true
            }
        },
        db =>
        {
            //(A)全局生效配置点
            //调试SQL事件，可以删掉
            db.Aop.OnLogExecuting = (sql, pars) =>
            {
                logHelper.SqlLog($"[ {sql} ]");
            };
        });

    }
}

