115 lines
3.5 KiB
C#
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
|
|
}
|
|
}
|
|
|