using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; namespace IOL.GreatOffice.Api.Data; public class AppDbContext : DbContext, IDataProtectionKeyContext { public AppDbContext(DbContextOptions options) : base(options) { } public DbSet Users { get; set; } public DbSet ForgotPasswordRequests { get; set; } public DbSet TimeLabels { get; set; } public DbSet TimeEntries { get; set; } public DbSet TimeCategories { get; set; } public DbSet GithubUserMappings { get; set; } public DbSet AccessTokens { get; set; } public DbSet Tenants { get; set; } public DbSet DataProtectionKeys { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(e => { e.ToTable("users"); }); modelBuilder.Entity(e => { e.HasOne(c => c.User); e.ToTable("forgot_password_requests"); }); modelBuilder.Entity(e => { e.ToTable("time_categories"); }); modelBuilder.Entity(e => { e.ToTable("time_labels"); }); modelBuilder.Entity(e => { e.HasOne(c => c.Category); e.HasMany(c => c.Labels); e.ToTable("time_entries"); }); modelBuilder.Entity(e => { e.HasOne(c => c.User); e.HasKey(c => c.GithubId); e.ToTable("github_user_mappings"); }); modelBuilder.Entity(e => { e.ToTable("api_access_tokens"); }); modelBuilder.Entity(e => { e.ToTable("tenants"); }); base.OnModelCreating(modelBuilder); } }