using Microsoft.EntityFrameworkCore; using Domain.Entities.Common; using Domain.Entities.Members; using Domain.Entities.Page; using Domain.Entities.Page.Faq; using Domain.Entities.Page.Banner; using Domain.Entities.Members.Logs; 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.Payments.Toss; using Domain.Entities.Feed; using Domain.Entities.Store; using Domain.Entities.Stocks; using Domain.Entities.Chat; namespace Application.Abstractions.Data; // IAsyncDisposable: 팩토리(IAppDbContextFactory)로 만든 out-of-band 컨텍스트를 `await using` 으로 해제하기 위함. // 스코프 등록 컨텍스트는 DI 가 해제하므로 이 계약 추가는 기존 사용처에 영향이 없다. (Phase 1.5) public interface IAppDbContext : IAsyncDisposable { // 관리자 DbSet AdminLoginLog { get; set; } DbSet AdminAccessLog { get; set; } // 각종 설정 및 페이지 DbSet Config { get; set; } DbSet EmailLog { get; set; } DbSet Document { get; set; } DbSet PopupPosition { get; set; } DbSet Popup { get; set; } DbSet FaqCategory { get; set; } DbSet FaqItem { get; set; } DbSet BannerPosition { get; set; } DbSet BannerItem { get; set; } // 회원 DbSet Member { get; set; } DbSet MemberStats { get; set; } DbSet MemberApprove { get; set; } DbSet MemberGrade { get; set; } DbSet MemberLoginLog { get; set; } DbSet MemberEmailChangeLog { get; set; } DbSet MemberNameChangeLog { get; set; } DbSet MemberSummaryChangeLog { get; set; } DbSet MemberIntroChangeLog { get; set; } DbSet MemberThumbChangeLog { get; set; } DbSet MemberItemUsageLog { get; set; } DbSet MemberExpLog { get; set; } DbSet MemberDailyRewardCounter { get; set; } DbSet Attendance { get; set; } DbSet MemberFollow { get; set; } DbSet MemberTrackRecord { get; set; } DbSet MemberItem { get; set; } DbSet Channel { get; set; } DbSet ChannelHandleHistory { get; set; } DbSet BroadcastSession { get; set; } DbSet ChannelBroadcastStats { get; set; } DbSet RefreshToken { get; set; } DbSet MemberOAuthToken { get; set; } // 이메일 인증 DbSet EmailVerifyToken { get; set; } DbSet EmailVerifyNumber { get; set; } // 지갑 DbSet Wallet { get; set; } DbSet WalletTransaction { get; set; } // 게시판 DbSet BoardGroup { get; set; } DbSet Board { get; set; } DbSet BoardMeta { get; set; } DbSet BoardManager { get; set; } DbSet BoardPrefix { get; set; } // 게시글 DbSet Post { get; set; } DbSet PostImage { get; set; } DbSet PostMedia { get; set; } DbSet PostFile { get; set; } DbSet PostLink { get; set; } DbSet PostReaction { get; set; } DbSet PostBookmark { get; set; } DbSet PostReport { get; set; } DbSet PostTag { get; set; } DbSet Tag { get; set; } DbSet PostCheer { get; set; } DbSet PostStockTag { get; set; } DbSet PostPrediction { get; set; } // 댓글 DbSet Comment { get; set; } DbSet CommentFile { get; set; } DbSet CommentImage { get; set; } DbSet CommentMedia { get; set; } DbSet CommentLink { get; set; } DbSet CommentReaction { get; set; } DbSet CommentReport { get; set; } DbSet CommentMention { get; set; } // 게시글/댓글 로그 DbSet PostUpdateLog { get; set; } DbSet PostFileDownLog { get; set; } DbSet PostLinkClickLog { get; set; } DbSet PostViewLog { get; set; } DbSet CommentUpdateLog { get; set; } DbSet CommentFileDownLog { get; set; } DbSet CommentLinkClickLog { get; set; } // 피드 (X/Twitter + Reddit 스타일 — Forum과 완전 분리) DbSet FeedPost { get; set; } DbSet FeedComment { get; set; } DbSet FeedLike { get; set; } DbSet FeedCommentLike { get; set; } DbSet FeedBookmark { get; set; } DbSet FeedTag { get; set; } DbSet FeedPostTag { get; set; } DbSet FeedPostImage { get; set; } DbSet FeedPostMedia { get; set; } DbSet FeedPostMention { get; set; } // 쪽지 DbSet Note { get; set; } // 알림 DbSet Notification { get; set; } // 결제 DbSet PaymentOrder { get; set; } DbSet TossConfirm { get; set; } DbSet TossCancel { get; set; } DbSet TossLog { get; set; } DbSet PaymentReconcileLog { get; set; } // 상점 (Store) DbSet Game { get; set; } DbSet GameGenre { get; set; } DbSet GameCategory { get; set; } DbSet GameGenreMap { get; set; } DbSet GameCategoryMap { get; set; } DbSet GameImage { get; set; } DbSet GameLanguage { get; set; } DbSet GameLanguageSupport { get; set; } DbSet Product { get; set; } DbSet Coupon { get; set; } DbSet CouponCode { get; set; } DbSet Order { get; set; } DbSet OrderItem { get; set; } DbSet OrderRefund { get; set; } DbSet OrderRefundItem { get; set; } DbSet MemberInventory { get; set; } DbSet MemberAddress { get; set; } DbSet Shipment { get; set; } DbSet GameSettlement { get; set; } DbSet ProductLimitConfig { get; set; } // 주식 (Stocks — 개미투자 D1) DbSet Stock { get; set; } DbSet StockDailyPrice { get; set; } DbSet IndexDailyPrice { get; set; } DbSet BondIndexDailyPrice { get; set; } DbSet EtpDailyTrade { get; set; } DbSet WarrantDailyTrade { get; set; } DbSet BondDailyTrade { get; set; } DbSet MarketHoliday { get; set; } DbSet StockBoardStats { get; set; } // 채팅 (Chat — 개미투자 D2) DbSet ChatRoomConfig { get; set; } DbSet ChatBan { get; set; } // 모의투자 (Paper — 개미투자 D4) DbSet PaperAccount { get; set; } DbSet PaperPosition { get; set; } DbSet PaperOrder { get; set; } DbSet PaperFill { get; set; } DbSet PaperLedger { get; set; } DbSet PaperDailySnapshot { get; set; } Task SaveChangesAsync(CancellationToken ct = default); }