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.Briefings; 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 MemberTrackRecord { 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 PostCheer { get; set; } public DbSet PostStockTag { get; set; } public DbSet PostPrediction { 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; } // 장전 브리핑 발행 기록 (d2 M3) public DbSet DailyBriefing { 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 IndexDailyPrice { get; set; } public DbSet BondIndexDailyPrice { get; set; } public DbSet EtpDailyTrade { get; set; } public DbSet WarrantDailyTrade { get; set; } public DbSet BondDailyTrade { get; set; } public DbSet FuturesDailyTrade { get; set; } public DbSet OptionsDailyTrade { get; set; } public DbSet CommodityDailyTrade { get; set; } public DbSet EsgSecurity { get; set; } public DbSet EsgIndexDailyPrice { get; set; } public DbSet SriBond { get; set; } public DbSet Disclosure { get; set; } public DbSet ExchangeRate { get; set; } public DbSet InterestRate { get; set; } public DbSet MacroIndicator { get; set; } public DbSet MarketHoliday { get; set; } public DbSet StockBoardStats { get; set; } public DbSet SeibroIssuerCode { get; set; } public DbSet DividendSchedule { get; set; } public DbSet Dividend { get; set; } public DbSet RightsBaseDate { get; set; } public DbSet SecuritiesLending { get; set; } public DbSet LockupEvent { get; set; } public DbSet StockIssuanceChange { get; set; } public DbSet ListingChangeEvent { get; set; } public DbSet UnlistedCirculation { get; set; } public DbSet GeneralMeeting { get; set; } public DbSet MeetingAgenda { get; set; } public DbSet CorpNameChange { get; set; } public DbSet PaymentSchedule { get; set; } public DbSet OddLotPayment { get; set; } public DbSet ConvertibleBondTarget { get; set; } public DbSet ConvertibleExercise { get; set; } // 채권·단기금융 (SEIBro Wave 4) public DbSet BondIssuance { get; set; } public DbSet BondMaster { get; set; } public DbSet BondInterestPayment { get; set; } public DbSet BondEarlyRedemption { get; set; } public DbSet ShortTermIssuance { get; set; } public DbSet CdMaster { get; set; } public DbSet CpMaster { get; set; } public DbSet EstbMaster { get; set; } // 파생결합증권 ELS/DLS (SEIBro Wave 5) public DbSet DerivIssuance { get; set; } public DbSet DerivMaster { get; set; } public DbSet DerivAsset { get; set; } public DbSet DerivAssetExercise { get; set; } public DbSet DerivRedemptionCondition { get; set; } public DbSet DerivRedemption { get; set; } public DbSet ElsUnredeemedScale { get; set; } // 외화증권 (SEIBro Wave 6) public DbSet ForeignCustodyNation { get; set; } public DbSet ForeignSettlementNation { get; set; } public DbSet ForeignCustodySecurity { get; set; } public DbSet ForeignSettlementSecurity { get; set; } // SEIBro 수집 마커 (리뷰 결함 #1 — 정상 0행 재수집·starvation 해소) public DbSet SeibroFetchMarker { get; set; } public DbSet SeibroSweptDate { 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); } }