using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using PnvPanel.Application.Common.Interfaces;
using PnvPanel.Domain.Activation;
using PnvPanel.Domain.Apps;
using PnvPanel.Domain.Audit;
using PnvPanel.Domain.Billing;
using PnvPanel.Domain.Configs;
using PnvPanel.Domain.Inbounds;
using PnvPanel.Domain.Instructions;
using PnvPanel.Domain.News;
using PnvPanel.Domain.Nodes;
using PnvPanel.Domain.Plans;
using PnvPanel.Domain.Pricing;
using PnvPanel.Domain.Support;
using PnvPanel.Domain.Telegram;
using PnvPanel.Infrastructure.Identity;
namespace PnvPanel.Infrastructure.Persistence;
///
/// Корневой DbContext приложения: Identity-схема (пользователи/роли) + сущности домена
/// (добавляются по мере реализации фич, см. docs/roadmap.md).
///
public class AppDbContext(DbContextOptions options)
: IdentityDbContext(options),
IAppDbContext
{
public DbSet RefreshTokens => Set();
public DbSet ActivationRequests => Set();
public DbSet AuditLogs => Set();
public DbSet TelegramLinkTokens => Set();
public DbSet TelegramLoginRequests => Set();
public DbSet Nodes => Set();
public DbSet Inbounds => Set();
public DbSet VpnConfigs => Set();
public DbSet TrafficSamples => Set();
public DbSet ClientApps => Set();
public DbSet NewsPosts => Set();
public DbSet SupportTickets => Set();
public DbSet TicketComments => Set();
public DbSet TicketAttachments => Set();
public DbSet InstructionIntros => Set();
public DbSet InstructionTabs => Set();
public DbSet PricingSettings => Set();
public DbSet PricingDiscountTiers => Set();
public DbSet BillingSettings => Set();
public DbSet PaymentRequests => Set();
public DbSet Plans => Set();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
}
}