using MareSynchronosShared.Models; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; namespace MareSynchronosShared.Data; public class MareDbContext : DbContext { public MareDbContext() { } public MareDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (optionsBuilder.IsConfigured) { base.OnConfiguring(optionsBuilder); return; } optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=mare;Username=postgres", builder => { builder.MigrationsHistoryTable("_efmigrationshistory", "public"); builder.MigrationsAssembly("MareSynchronosShared"); }).UseSnakeCaseNamingConvention(); optionsBuilder.EnableThreadSafetyChecks(false); base.OnConfiguring(optionsBuilder); } public DbSet Users { get; set; } public DbSet Files { get; set; } public DbSet ClientPairs { get; set; } public DbSet ForbiddenUploadEntries { get; set; } public DbSet BannedUsers { get; set; } public DbSet Auth { get; set; } public DbSet LodeStoneAuth { get; set; } public DbSet BannedRegistrations { get; set; } public DbSet Aliases { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().ToTable("auth"); modelBuilder.Entity().ToTable("users"); modelBuilder.Entity().HasIndex(c => c.CharacterIdentification); modelBuilder.Entity().ToTable("aliases"); modelBuilder.Entity().HasIndex(c => c.AliasUID); modelBuilder.Entity().ToTable("file_caches"); modelBuilder.Entity().HasIndex(c => c.UploaderUID); modelBuilder.Entity().ToTable("client_pairs"); modelBuilder.Entity().HasKey(u => new { u.UserUID, u.OtherUserUID }); modelBuilder.Entity().HasIndex(c => c.UserUID); modelBuilder.Entity().HasIndex(c => c.OtherUserUID); modelBuilder.Entity().ToTable("forbidden_upload_entries"); modelBuilder.Entity().ToTable("banned_users"); modelBuilder.Entity().ToTable("lodestone_auth"); modelBuilder.Entity().ToTable("banned_registrations"); } }