Files
magman/MagMan.Data.Admin/ServerAdminContext.cs
2025-09-22 19:37:14 +02:00

115 lines
3.5 KiB
C#

using MagMan.Data.Admin.DbModels;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using NLog;
namespace MagMan.Data.Admin
{
/// <summary>
/// Classe gestione Server MySql:
/// - creazione utenti su DB principale
/// - aggiunta permessi lettura/scrittura
/// </summary>
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<ServerAdminContext> options) : base(options)
{
Log.Info("Calling ServerAdminContext(DbContextOptions<ServerAdminContext> options)");
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// User management
/// </summary>
public virtual DbSet<UserPriv> UserList { get; set; } = null!;
/// <summary>
/// User management
/// </summary>
public virtual DbSet<DbModel> 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<UserPriv>().HasKey(c => new { c.Host, c.User });
OnModelCreatingPartial(modelBuilder);
}
#endregion Protected Methods
#region Private Methods
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
#endregion Private Methods
}
}