using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Tiku.Domain.Identity;
using Tiku.Domain.Tenancy;

namespace Tiku.Infrastructure.Persistence;

public sealed partial class TikuDbContext
{
    public DbSet<Tenant> Tenants => Set<Tenant>();
    public new DbSet<User> Users => Set<User>();
    public DbSet<UserIdentity> UserIdentities => Set<UserIdentity>();
    public DbSet<TenantMembership> TenantMemberships => Set<TenantMembership>();
    public DbSet<TenantDomain> TenantDomains => Set<TenantDomain>();
    public DbSet<TenantBranding> TenantBrandings => Set<TenantBranding>();
    public DbSet<TenantSettings> TenantSettings => Set<TenantSettings>();
    public DbSet<TenantAuthPolicy> TenantAuthPolicies => Set<TenantAuthPolicy>();
    public DbSet<TenantFrontendConfig> TenantFrontendConfigs => Set<TenantFrontendConfig>();
    public DbSet<TenantExternalProvider> TenantExternalProviders => Set<TenantExternalProvider>();
    public DbSet<TenantSecret> TenantSecrets => Set<TenantSecret>();
    public DbSet<SmsVerificationCode> SmsVerificationCodes => Set<SmsVerificationCode>();
    public DbSet<SmsChannel> SmsChannels => Set<SmsChannel>();
    public DbSet<SmsTemplate> SmsTemplates => Set<SmsTemplate>();
    public DbSet<SmsSendLog> SmsSendLogs => Set<SmsSendLog>();
    public DbSet<AuthLoginEvent> AuthLoginEvents => Set<AuthLoginEvent>();
    public DbSet<AuthSession> AuthSessions => Set<AuthSession>();
    public DbSet<AuthChallenge> AuthChallenges => Set<AuthChallenge>();
    public DbSet<SmsSendRateLimit> SmsSendRateLimits => Set<SmsSendRateLimit>();
    public DbSet<TenantClass> TenantClasses => Set<TenantClass>();
    public DbSet<TenantClassMember> TenantClassMembers => Set<TenantClassMember>();
    public DbSet<TenantStudentNote> TenantStudentNotes => Set<TenantStudentNote>();
    public DbSet<TenantStudentFollowup> TenantStudentFollowups => Set<TenantStudentFollowup>();
    public DbSet<StudentProfile> StudentProfiles => Set<StudentProfile>();
    public DbSet<DataProtectionKey> DataProtectionKeys => Set<DataProtectionKey>();
}