Files
PnvPanel/backend/src/PnvPanel.Infrastructure/Persistence/AppDbContext.cs
T
Leonid Pershin c2ed3240bd
CI / Backend (build + test) (push) Failing after 1m35s
CI / Frontend (lint + typecheck + build) (push) Successful in 43s
Add media image handling and related endpoints
- Introduced `MediaImage` entity to manage images for markdown in instructions and news.
- Updated `IAppDbContext` and `AppDbContext` to include `MediaImages` DbSet.
- Implemented `DeleteMediaImageFilesAsync` method in `FactoryResetCommandHandler` to remove media images during factory reset.
- Added new API endpoints for uploading and retrieving media images, enhancing markdown support.
- Updated frontend components to utilize the new `MarkdownEditor` for image uploads in instructions and news.
- Enhanced documentation to reflect the new media handling features and API specifications.
2026-07-30 04:05:01 +03:00

80 lines
2.8 KiB
C#

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.Media;
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;
/// <summary>
/// Корневой DbContext приложения: Identity-схема (пользователи/роли) + сущности домена
/// (добавляются по мере реализации фич, см. docs/roadmap.md).
/// </summary>
public class AppDbContext(DbContextOptions<AppDbContext> options)
: IdentityDbContext<AppUser, AppRole, Guid>(options),
IAppDbContext
{
public DbSet<RefreshToken> RefreshTokens => Set<RefreshToken>();
public DbSet<ActivationRequest> ActivationRequests => Set<ActivationRequest>();
public DbSet<AuditLog> AuditLogs => Set<AuditLog>();
public DbSet<TelegramLinkToken> TelegramLinkTokens => Set<TelegramLinkToken>();
public DbSet<TelegramLoginRequest> TelegramLoginRequests => Set<TelegramLoginRequest>();
public DbSet<Node> Nodes => Set<Node>();
public DbSet<Inbound> Inbounds => Set<Inbound>();
public DbSet<VpnConfig> VpnConfigs => Set<VpnConfig>();
public DbSet<TrafficSample> TrafficSamples => Set<TrafficSample>();
public DbSet<ClientApp> ClientApps => Set<ClientApp>();
public DbSet<NewsPost> NewsPosts => Set<NewsPost>();
public DbSet<SupportTicket> SupportTickets => Set<SupportTicket>();
public DbSet<TicketComment> TicketComments => Set<TicketComment>();
public DbSet<TicketAttachment> TicketAttachments => Set<TicketAttachment>();
public DbSet<InstructionIntro> InstructionIntros => Set<InstructionIntro>();
public DbSet<InstructionTab> InstructionTabs => Set<InstructionTab>();
public DbSet<MediaImage> MediaImages => Set<MediaImage>();
public DbSet<PricingSettings> PricingSettings => Set<PricingSettings>();
public DbSet<PricingDiscountTier> PricingDiscountTiers => Set<PricingDiscountTier>();
public DbSet<BillingSettings> BillingSettings => Set<BillingSettings>();
public DbSet<PaymentRequest> PaymentRequests => Set<PaymentRequest>();
public DbSet<Plan> Plans => Set<Plan>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
}
}