133 lines
4.7 KiB
C#
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
|
|
}
|
|
} |