using Domain.Entities.Store; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Infrastructure.Persistence.Configurations.Store; public sealed class GameSettlementConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable(nameof(GameSettlement), t => t.HasComment("게임사 월별 정산 큐")); builder.HasKey(x => x.ID); builder.HasOne(x => x.Game).WithMany().HasForeignKey(x => x.GameID).OnDelete(DeleteBehavior.Restrict); builder.Property(x => x.GameID).IsRequired(); builder.Property(x => x.Year).IsRequired(); builder.Property(x => x.Month).IsRequired(); builder.Property(x => x.TotalRevenueAmount).IsRequired(); builder.Property(x => x.OrderCount).IsRequired(); builder.Property(x => x.Status).HasConversion().IsRequired().HasComment("정산 상태 (1=Pending, 2=Settled)"); builder.Property(x => x.CreatedAt).IsRequired(); builder.Property(x => x.SettledAt); builder.Property(x => x.SettledByAdminUserId).HasMaxLength(450); builder.Property(x => x.SettledByAdminEmail).HasMaxLength(256); builder.Property(x => x.AdminMemo).HasMaxLength(500); builder.HasIndex(x => new { x.GameID, x.Year, x.Month }).IsUnique(); builder.HasIndex(x => new { x.Year, x.Month, x.Status }); } }