Files
magman/MagMan.Data.Admin/DbConfig.cs
T

133 lines
4.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using MySqlConnector;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MagMan.Data.Admin
{
public static class DbConfig
{
#region Public Fields
public static string DATABASE_NAME = "MagMan_Admin";
public static int DATABASE_PROCESS_TIMEOUT = 5;
public static string DATABASE_PWD = "viad@nte16!";
public static string DATABASE_SERV = "127.0.0.1";
public static string DATABASE_USER = "MagMan_DbUser";
#endregion Public Fields
#region Public Properties
/// <summary>
/// DB Connection string per azioni amministrative
/// </summary>
public static string ADMIN_CONNECTION_STRING { get; set; } = "";
/// <summary>
/// DB Connection string
/// </summary>
public static string CONNECTION_STRING { get; set; } = "";
#endregion Public Properties
#region Public Methods
public static bool CheckCustDb(int masterKey)
{
// esecuzione script di install locale
return DbAdmin.CheckCreateCustDb(masterKey);
}
public static bool CheckUser(string nKey, string sKey)
{
// esecuzione script di install locale
return DbAdmin.CheckCreateUser(DATABASE_USER, DATABASE_PWD, DATABASE_NAME);
}
public static ServerVersion CustomAutoDetect(string connectionString)
{
#if false
using var connection = new MySqlConnection(
new MySqlConnectionStringBuilder(connectionString)
{
Database = string.Empty,
// AutoEnlist = false, Pooling = false,
}.ConnectionString);
#endif
using var connection = new MySqlConnection(connectionString);
connection.Open();
ServerVersion currVers = ServerVersion.Parse(connection.ServerVersion);
return currVers;
}
public static bool ExecMigrationIdentity()
{
// esecuzione migrazione
var migrateTask = Task.Run(async () => await DbAdmin.MigrateDbIdentity());
migrateTask.Wait();
return migrateTask.Result;
}
public static bool ExecMigrationMultiTenant()
{
// esecuzione migrazione
var migrateTask = Task.Run(async () => await DbAdmin.MigrateDbMultiTenant());
migrateTask.Wait();
return migrateTask.Result;
}
public static void InitDb(string server)
{
DATABASE_SERV = server;
// tutto fisso x gestione utenti
CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
// stringa admin con utente admin dell'applicazione (già creato)...
ADMIN_CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database=mysql;uid=egalware;pwd=Egalware_24068!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
}
public static ServerVersion MysqlServerVersion(string connString)
{
// fix come da https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/1859
//Log.Info($"MysqlServerVersion | {connString}");
//ServerVersion serverVersion = ServerVersion.Parse("10.11.13-MariaDB");
ServerVersion serverVersion = ServerVersion.Parse("10.5.25-mysql");
bool versOk = false;
try
{
serverVersion = ServerVersion.AutoDetect(connString);
versOk = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in verifica versione server ServerVersion.AutoDetect: {Environment.NewLine}{exc}");
}
if (!versOk)
{
try
{
serverVersion = CustomAutoDetect(connString);
versOk = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in verifica versione server CustomAutoDetect: {Environment.NewLine}{exc}");
}
}
return serverVersion;
}
#endregion Public Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}