using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Domain.Entities.Members; /// /// 채널 핸들 변경 이력 — 이전 핸들로 접속 시 현재 핸들로 리다이렉트 하기 위한 테이블 /// public sealed class ChannelHandleHistory { [ForeignKey(nameof(ChannelID))] public Channel Channel { get; private set; } = null!; [Key] public int ID { get; private set; } public int ChannelID { get; private set; } public string OldHandle { get; private set; } = default!; public DateTime ChangedAt { get; private set; } = DateTime.UtcNow; private ChannelHandleHistory() { } private ChannelHandleHistory(int channelID, string oldHandle) { if (channelID <= 0) { throw new ArgumentOutOfRangeException(nameof(channelID)); } if (string.IsNullOrWhiteSpace(oldHandle)) { throw new ArgumentException("OldHandle is required.", nameof(oldHandle)); } if (oldHandle.Length > 30) { throw new ArgumentOutOfRangeException(nameof(oldHandle)); } ChannelID = channelID; OldHandle = oldHandle; ChangedAt = DateTime.UtcNow; } public static ChannelHandleHistory Create(int channelID, string oldHandle) { return new(channelID, oldHandle); } }