using MareSynchronosShared.Models; using Microsoft.EntityFrameworkCore; namespace MareSynchronosShared.Data; public class MareDbContext : DbContext { #if DEBUG public MareDbContext() { } 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); } #endif public MareDbContext(DbContextOptions options) : base(options) { } 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 Groups { get; set; } public DbSet GroupPairs { get; set; } public DbSet GroupBans { get; set; } public DbSet GroupTempInvites { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().ToTable("auth"); modelBuilder.Entity().ToTable("users"); 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"); modelBuilder.Entity().ToTable("groups"); modelBuilder.Entity().HasIndex(c => c.OwnerUID); modelBuilder.Entity().ToTable("group_pairs"); modelBuilder.Entity().HasKey(u => new { u.GroupGID, u.GroupUserUID }); modelBuilder.Entity().HasIndex(c => c.GroupUserUID); modelBuilder.Entity().HasIndex(c => c.GroupGID); modelBuilder.Entity().ToTable("group_bans"); modelBuilder.Entity().HasKey(u => new { u.GroupGID, u.BannedUserUID }); modelBuilder.Entity().HasIndex(c => c.BannedUserUID); modelBuilder.Entity().HasIndex(c => c.GroupGID); modelBuilder.Entity().ToTable("group_temp_invites"); modelBuilder.Entity().HasKey(u => new { u.GroupGID, u.Invite }); modelBuilder.Entity().HasIndex(c => c.GroupGID); modelBuilder.Entity().HasIndex(c => c.Invite); } }