| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- namespace Domain.Entities.Members;
- /// <summary>
- /// 회원 팔로우 관계 (Follower → Followee)
- /// </summary>
- public sealed class MemberFollow
- {
- [ForeignKey(nameof(FollowerMemberID))]
- public Member Follower { get; private set; } = null!;
- [ForeignKey(nameof(FolloweeMemberID))]
- public Member Followee { get; private set; } = null!;
- [Key]
- public int ID { get; private set; }
- public int FollowerMemberID { get; private set; }
- public int FolloweeMemberID { get; private set; }
- public bool NotifyOnPost { get; private set; } = true;
- public bool IsMuted { get; private set; } = false;
- public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
- private MemberFollow() { }
- private MemberFollow(int followerMemberID, int followeeMemberID)
- {
- if (followerMemberID <= 0)
- {
- throw new ArgumentOutOfRangeException(nameof(followerMemberID));
- }
- if (followeeMemberID <= 0)
- {
- throw new ArgumentOutOfRangeException(nameof(followeeMemberID));
- }
- if (followerMemberID == followeeMemberID)
- {
- throw new ArgumentException("자기 자신을 팔로우할 수 없습니다.", nameof(followeeMemberID));
- }
- FollowerMemberID = followerMemberID;
- FolloweeMemberID = followeeMemberID;
- CreatedAt = DateTime.UtcNow;
- }
- public static MemberFollow Create(int followerMemberID, int followeeMemberID)
- {
- return new(followerMemberID, followeeMemberID);
- }
- public void SetNotifyOnPost(bool notify)
- {
- NotifyOnPost = notify;
- }
- public void SetMuted(bool muted)
- {
- IsMuted = muted;
- }
- }
|