using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Domain.Entities.Members { public class MemberStats { [ForeignKey(nameof(MemberID))] public virtual Member Member { get; private set; } = null!; public byte[] RowVersion { get; set; } = Array.Empty(); [Key] public int MemberID { get; set; } // 경험치 public long Exp { get; set; } = 0; // 게시글 작성 수 public long PostCount { get; set; } = 0; // 댓글 작성 수 public long CommentCount { get; set; } = 0; // 받은 좋아요 수 public long LikeReceivedCount { get; set; } = 0; // 준 좋아요 수 public long LikeGivenCount { get; set; } = 0; // 신고 당한 횟수 public long ReportedCount { get; set; } = 0; // 즐겨찾기 글 수 public long BookmarkGivenCount { get; set; } = 0; // 경고 횟수 public int WarningCount { get; set; } = 0; // 정지 횟수 public int SuspensionCount { get; set; } = 0; // 로그인 횟수 public long LoginCount { get; set; } = 0; // 출석 횟수 public long AttendanceCount { get; set; } = 0; // 구독 중인 회원 수 public long FollowingCount { get; set; } = 0; // 구독자 수 public long FollowerCount { get; set; } = 0; // 결제 횟수 public long PaymentCount { get; set; } = 0; // 누적 결제 금액 public long TotalPaidAmount { get; set; } = 0; // 누적 취소/환불 금액 public long TotalCanceledAmount { get; set; } = 0; private MemberStats() { } private MemberStats(int memberID) { if (memberID <= 0) { throw new ArgumentOutOfRangeException(nameof(memberID)); } MemberID = memberID; } public static MemberStats Create(int memberID) { return new(memberID); } } }