using Application.Abstractions.Data; using Domain.Entities.Common; using Domain.Entities.Members; using Domain.Entities.Members.Logs; using Domain.Entities.Page; using Domain.Entities.Page.Banner; using Domain.Entities.Page.Faq; using Domain.Entities.Wallets; using Domain.Entities.Forum.Boards; using Domain.Entities.Forum.Posts; using Domain.Entities.Forum.Comments; using Domain.Entities.Director; using Domain.Entities.EmailVerification; using Domain.Entities.Forum.Logs; using Domain.Entities.Page.Popup; using Domain.Entities.Notes; using Domain.Entities.Notifications; using Domain.Entities.Payments; using Domain.Entities.Payments.Toss; using Domain.Entities.Feed; using Domain.Entities.Store; using Domain.Entities.Stocks; using Domain.Entities.Chat; using Microsoft.EntityFrameworkCore; namespace Infrastructure.Persistence; public sealed class AppDbContext : DbContext, IAppDbContext { public AppDbContext(DbContextOptions options) : base(options) { } // Admin public DbSet AdminLoginLog { get; set; } public DbSet AdminAccessLog { get; set; } // Config public DbSet Config { get; set; } public DbSet EmailLog { get; set; } // Page public DbSet Document { get; set; } public DbSet PopupPosition { get; set; } public DbSet Popup { get; set; } public DbSet FaqCategory { get; set; } public DbSet FaqItem { get; set; } public DbSet BannerPosition { get; set; } public DbSet BannerItem { get; set; } // Member public DbSet Member { get; set; } public DbSet MemberStats { get; set; } public DbSet MemberGrade { get; set; } public DbSet MemberApprove { get; set; } public DbSet MemberLoginLog { get; set; } public DbSet MemberEmailChangeLog { get; set; } public DbSet MemberNameChangeLog { get; set; } public DbSet MemberSummaryChangeLog { get; set; } public DbSet MemberIntroChangeLog { get; set; } public DbSet MemberThumbChangeLog { get; set; } public DbSet MemberItemUsageLog { get; set; } public DbSet MemberExpLog { get; set; } public DbSet MemberDailyRewardCounter { get; set; } public DbSet Attendance { get; set; } public DbSet MemberFollow { get; set; } public DbSet MemberItem { get; set; } public DbSet Channel { get; set; } public DbSet ChannelHandleHistory { get; set; } public DbSet BroadcastSession { get; set; } public DbSet ChannelBroadcastStats { get; set; } public DbSet RefreshToken { get; set; } public DbSet MemberOAuthToken { get; set; } // EmailVerification public DbSet EmailVerifyToken { get; set; } public DbSet EmailVerifyNumber { get; set; } // Wallet public DbSet Wallet { get; set; } public DbSet WalletTransaction { get; set; } // 게시판 public DbSet BoardGroup { get; set; } public DbSet Board { get; set; } public DbSet BoardMeta { get; set; } public DbSet BoardManager { get; set; } public DbSet BoardPrefix { get; set; } // 게시글 public DbSet Post { get; set; } public DbSet PostImage { get; set; } public DbSet PostMedia { get; set; } public DbSet PostFile { get; set; } public DbSet PostLink { get; set; } public DbSet PostReaction { get; set; } public DbSet PostBookmark { get; set; } public DbSet PostReport { get; set; } public DbSet PostTag { get; set; } public DbSet Tag { get; set; } // 댓글 public DbSet Comment { get; set; } public DbSet CommentFile { get; set; } public DbSet CommentImage { get; set; } public DbSet CommentMedia { get; set; } public DbSet CommentLink { get; set; } public DbSet CommentReaction { get; set; } public DbSet CommentReport { get; set; } public DbSet CommentMention { get; set; } // 게시글/댓글 로그 public DbSet PostUpdateLog { get; set; } public DbSet PostFileDownLog { get; set; } public DbSet PostLinkClickLog { get; set; } public DbSet PostViewLog { get; set; } public DbSet CommentUpdateLog { get; set; } public DbSet CommentFileDownLog { get; set; } public DbSet CommentLinkClickLog { get; set; } // 피드 (X/Twitter + Reddit 스타일 — Forum과 완전 분리) public DbSet FeedPost { get; set; } public DbSet FeedComment { get; set; } public DbSet FeedLike { get; set; } public DbSet FeedCommentLike { get; set; } public DbSet FeedBookmark { get; set; } public DbSet FeedTag { get; set; } public DbSet FeedPostTag { get; set; } public DbSet FeedPostImage { get; set; } public DbSet FeedPostMedia { get; set; } public DbSet FeedPostMention { get; set; } // 쪽지 public DbSet Note { get; set; } // 알림 public DbSet Notification { get; set; } // 결제 public DbSet PaymentOrder { get; set; } public DbSet TossConfirm { get; set; } public DbSet TossCancel { get; set; } public DbSet TossLog { get; set; } public DbSet PaymentReconcileLog { get; set; } // 상점 (Store) public DbSet Game { get; set; } public DbSet GameGenre { get; set; } public DbSet GameCategory { get; set; } public DbSet GameGenreMap { get; set; } public DbSet GameCategoryMap { get; set; } public DbSet GameImage { get; set; } public DbSet GameLanguage { get; set; } public DbSet GameLanguageSupport { get; set; } public DbSet Product { get; set; } public DbSet Coupon { get; set; } public DbSet CouponCode { get; set; } public DbSet Order { get; set; } public DbSet OrderItem { get; set; } public DbSet OrderRefund { get; set; } public DbSet OrderRefundItem { get; set; } public DbSet MemberInventory { get; set; } public DbSet MemberAddress { get; set; } public DbSet Shipment { get; set; } public DbSet GameSettlement { get; set; } public DbSet ProductLimitConfig { get; set; } // 주식 (Stocks — 개미투자 D1) public DbSet Stock { get; set; } public DbSet StockDailyPrice { get; set; } public DbSet MarketHoliday { get; set; } // 채팅 (Chat — 개미투자 D2) public DbSet ChatRoomConfig { get; set; } public DbSet ChatBan { get; set; } // 모의투자 (Paper — 개미투자 D4) public DbSet PaperAccount { get; set; } public DbSet PaperPosition { get; set; } public DbSet PaperOrder { get; set; } public DbSet PaperFill { get; set; } public DbSet PaperLedger { get; set; } public DbSet PaperDailySnapshot { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Apply all configurations from the current assembly modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly); } }