using MagMan.Data.Admin.DbModels;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using NLog;
namespace MagMan.Data.Admin
{
///
/// Classe gestione Server MySql:
/// - creazione utenti su DB principale
/// - aggiunta permessi lettura/scrittura
///
public partial class ServerAdminContext : DbContext
{
#region Private Fields
#endregion Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
#region Public Constructors
public ServerAdminContext()
{
Log.Info("Calling ServerAdminContext()");
}
public ServerAdminContext(IConfiguration configuration)
{
Log.Info("Calling ServerAdminContext(IConfiguration configuration)");
}
public ServerAdminContext(DbContextOptions options) : base(options)
{
Log.Info("Calling ServerAdminContext(DbContextOptions options)");
}
#endregion Public Constructors
#region Public Properties
///
/// User management
///
public virtual DbSet UserList { get; set; } = null!;
///
/// User management
///
public virtual DbSet DbList { get; set; } = null!;
#endregion Public Properties
#region Protected Methods
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
Log.Info("Calling OnConfiguring");
string connString = DbConfig.ADMIN_CONNECTION_STRING;
if (!optionsBuilder.IsConfigured)
{
// chiave cablata x gestione Server se fosse vuota...
if (string.IsNullOrEmpty(connString))
{
connString = "Server=localhost;port=3306;database=mysql;user=egalware;pwd=Egalware_24068!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
}
ServerVersion serverVersion = DbConfig.MysqlServerVersion(connString);
optionsBuilder.UseMySql(connString, serverVersion);
Log.Info("NOT Configured | connString forced to default!");
}
else
{
Log.Info("optionsBuilder.IsConfigured");
}
}
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;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasKey(c => new { c.Host, c.User });
OnModelCreatingPartial(modelBuilder);
}
#endregion Protected Methods
#region Private Methods
//
// This is here so CodeMaid doesn't reorganize this document
//
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
#endregion Private Methods
}
}