using MicCheck.Api.Common.Security.ApiKeys; using MicCheck.Api.Audit; using MicCheck.Api.Common.Security.Authorization; using MicCheck.Api.Features; using MicCheck.Api.Features.Usage; using MicCheck.Api.Identities; using MicCheck.Api.Organizations; using MicCheck.Api.Projects; using MicCheck.Api.Segments; using MicCheck.Api.Users; using MicCheck.Api.Webhooks; using Microsoft.EntityFrameworkCore; using AppEnvironment = MicCheck.Api.Environments.Environment; namespace MicCheck.Api.Data; public class MicCheckDbContext : DbContext, IMicCheckDbContext { public MicCheckDbContext(DbContextOptions options) : base(options) { } public DbSet Organizations => Set(); public DbSet OrganizationUsers => Set(); public DbSet Projects => Set(); public DbSet Environments => Set(); public DbSet Features => Set(); public DbSet FeatureStates => Set(); public DbSet FeatureSegments => Set(); public DbSet Tags => Set(); public DbSet Segments => Set(); public DbSet SegmentRules => Set(); public DbSet SegmentConditions => Set(); public DbSet Identities => Set(); public DbSet IdentityTraits => Set(); public DbSet AuditLogs => Set(); public DbSet Webhooks => Set(); public DbSet WebhookDeliveryLogs => Set(); public DbSet ApiKeys => Set(); public DbSet Users => Set(); public DbSet RefreshTokens => Set(); public DbSet UserProjectPermissions => Set(); public DbSet FeatureUsageDaily => Set(); protected override void OnModelCreating(ModelBuilder modelBuilder) => modelBuilder.ApplyConfigurationsFromAssembly(typeof(MicCheckDbContext).Assembly); } public interface IMicCheckDbContext { DbSet Organizations { get; } DbSet OrganizationUsers { get; } DbSet Projects { get; } DbSet Environments { get; } DbSet Features { get; } DbSet FeatureStates { get; } DbSet FeatureSegments { get; } DbSet Tags { get; } DbSet Segments { get; } DbSet SegmentRules { get; } DbSet SegmentConditions { get; } DbSet Identities { get; } DbSet IdentityTraits { get; } DbSet AuditLogs { get; } DbSet Webhooks { get; } DbSet WebhookDeliveryLogs { get; } DbSet ApiKeys { get; } DbSet Users { get; } DbSet RefreshTokens { get; } DbSet UserProjectPermissions { get; } DbSet FeatureUsageDaily { get; } int SaveChanges(); Task SaveChangesAsync(CancellationToken cancellationToken = default); }