using LANCommander.Server.Data.Enums; using LANCommander.Server.Data.Models; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; namespace LANCommander.Server.Data { public sealed class DatabaseContext( DbContextOptions options) : IdentityDbContext(options) { public static DatabaseProvider Provider = DatabaseProvider.Unknown; public static string ConnectionString = ""; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.EnableDetailedErrors(); optionsBuilder.EnableSensitiveDataLogging(); switch (Provider) { case DatabaseProvider.SQLite: optionsBuilder.UseSqlite(ConnectionString, options => options.MigrationsAssembly("LANCommander.Server.Data.SQLite")); break; case DatabaseProvider.MySQL: optionsBuilder.UseMySql(ConnectionString, ServerVersion.AutoDetect(ConnectionString), options => options.MigrationsAssembly("LANCommander.Server.Data.MySQL")); break; case DatabaseProvider.PostgreSQL: optionsBuilder.UseNpgsql(ConnectionString, options => options.MigrationsAssembly("LANCommander.Server.Data.PostgreSQL")); break; } base.OnConfiguring(optionsBuilder); } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships