| 1234567891011121314151617181920212223242526272829303132 |
- using Domain.Entities.Forum.Posts;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.EntityFrameworkCore.Metadata.Builders;
- namespace Infrastructure.Persistence.Configurations.Forum.Posts;
- public sealed class PostCheerConfiguration : IEntityTypeConfiguration<PostCheer>
- {
- public void Configure(EntityTypeBuilder<PostCheer> builder)
- {
- // 글 삭제 시 응원 원장은 감사 목적으로 보존 (NoAction). 회원 삭제와의 다중 캐스케이드 경로 충돌도 회피.
- builder.HasOne(x => x.Post).WithMany().HasForeignKey(x => x.PostID).OnDelete(DeleteBehavior.NoAction);
- builder.HasOne(x => x.FromMember).WithMany().HasForeignKey(x => x.FromMemberID).OnDelete(DeleteBehavior.NoAction);
- builder.HasOne(x => x.ToMember).WithMany().HasForeignKey(x => x.ToMemberID).OnDelete(DeleteBehavior.NoAction);
- builder.ToTable(nameof(PostCheer), x => x.HasComment("분석글 응원(Cheer) — D3 M4"));
- builder.HasKey(x => x.ID);
- builder.Property(x => x.ID).ValueGeneratedOnAdd().HasComment("PK");
- builder.Property(x => x.PostID).IsRequired().HasComment("응원 대상 게시글 ID");
- builder.Property(x => x.FromMemberID).IsRequired().HasComment("응원 발신자 회원 ID");
- builder.Property(x => x.ToMemberID).IsRequired().HasComment("응원 수신자(글 작성자) 회원 ID");
- builder.Property(x => x.Amount).IsRequired().HasComment("총 응원 금액");
- builder.Property(x => x.FeeAmount).IsRequired().HasComment("플랫폼 수수료(소각분)");
- builder.Property(x => x.NetAmount).IsRequired().HasComment("작성자 수령 순액(Reward 적립)");
- builder.Property(x => x.Message).HasMaxLength(100).HasComment("응원 한마디");
- builder.Property(x => x.CreatedAt).IsRequired().HasComment("응원 일시");
- builder.HasIndex(x => x.PostID);
- builder.HasIndex(x => new { x.ToMemberID, x.CreatedAt });
- builder.HasIndex(x => new { x.FromMemberID, x.CreatedAt });
- }
- }
|