using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; namespace IOL.GreatOffice.Api.Models.Database; public class MainAppDatabase : DbContext, IDataProtectionKeyContext { public MainAppDatabase(DbContextOptions options) : base(options) { } public DbSet Users { get; set; } public DbSet PasswordResetRequests { get; set; } public DbSet AccessTokens { get; set; } public DbSet Tenants { get; set; } public DbSet DataProtectionKeys { get; set; } public DbSet Projects { get; set; } public DbSet ProjectLabels { get; set; } public DbSet Customers { get; set; } public DbSet CustomersContacts { get; set; } public DbSet CustomerEvents { get; set; } public DbSet CustomerGroups { get; set; } public DbSet TodoLabels { get; set; } public DbSet TodoProjectAccessControls { get; set; } public DbSet TodoProjects { get; set; } public DbSet TodoComments { get; set; } public DbSet Todos { get; set; } public DbSet ValidationEmails { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(e => { e.HasMany(n => n.Tenants); e.ToTable("users"); }); modelBuilder.Entity(e => { e.HasOne(c => c.User); e.ToTable("password_reset_requests"); }); modelBuilder.Entity(e => { e.HasOne(n => n.User); e.ToTable("api_access_tokens"); }); modelBuilder.Entity(e => { e.HasMany(n => n.Users); e.ToTable("tenants"); }); modelBuilder.Entity(e => { e.HasMany(n => n.Members); e.HasMany(n => n.Customers); e.ToTable("projects"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Project); e.HasOne(n => n.User); e.ToTable("project_members"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Project); e.ToTable("project_labels"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Owner); e.HasMany(n => n.Events); e.HasMany(n => n.Contacts); e.HasMany(n => n.Groups); e.HasMany(n => n.Projects); e.ToTable("customers"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Customer); e.ToTable("customer_contacts"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Customer); e.ToTable("customer_events"); }); modelBuilder.Entity(e => { e.HasMany(n => n.Customers); e.ToTable("customer_groups"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Collection); e.HasOne(n => n.AssignedTo); e.HasOne(n => n.ClosedBy); e.HasMany(n => n.Labels); e.HasMany(n => n.Comments); e.ToTable("todos"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Project); e.HasMany(n => n.AccessControls); e.ToTable("todo_collections"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Todo); e.ToTable("todo_comments"); }); modelBuilder.Entity(e => { e.HasOne(n => n.Todo); e.ToTable("todo_labels"); }); modelBuilder.Entity(e => { e.HasOne(n => n.User); e.HasOne(n => n.Collection); e.ToTable("todo_collection_access_controls"); }); modelBuilder.Entity(e => { e.ToTable("validation_emails"); }); base.OnModelCreating(modelBuilder); } }