using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; namespace Domain.Entities.Forum.Boards { [Table(nameof(Board))] [Index(nameof(BoardGroupID))] [Index(nameof(Code), IsUnique = true)] [Index(nameof(Name))] [Index(nameof(Order))] [Index(nameof(IsSearch))] [Index(nameof(IsActive))] [Index(nameof(Posts))] [Index(nameof(Comments))] [Index(nameof(IsSearch), nameof(IsActive))] [Index(nameof(Code), nameof(IsSearch))] [Index(nameof(Code), nameof(IsActive))] [Index(nameof(Code), nameof(IsSearch))] public class Board { // 게시판 [ForeignKey(nameof(BoardGroupID))] public virtual BoardGroup BoardGroup { get; set; } = null!; // 게시판 속성 public virtual BoardMeta BoardMeta { get; set; } = null!; // 게시판 관리자 public virtual List BoardManager { get; set; } = []; // 말머리 public virtual List BoardPrefix { get; set; } = []; // 게시글 public virtual List Post { get; set; } = []; [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DisplayName("PK")] [Comment("PK")] public int ID { get; set; } [DisplayName("분류 ID")] [Comment("분류 ID")] [Required(ErrorMessage = "{0}는 필수입니다.")] public int BoardGroupID { get; set; } [DisplayName("게시판 주소")] [Comment("게시판 주소")] [Required(ErrorMessage = "{0}는 필수입니다.")] [StringLength(30, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")] public string Code { get; set; } = null!; [DisplayName("게시판 이름")] [Comment("게시판 이름")] [Required(ErrorMessage = "{0}는 필수입니다.")] [StringLength(70, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")] public string Name { get; set; } = null!; [DisplayName("순서")] [Comment("순서")] [Required(ErrorMessage = "{0}는 필수입니다.")] [Range(short.MinValue, short.MaxValue, ErrorMessage = "{0}는 {2} ~ {1} 사이를 입력합니다.")] public short Order { get; set; } = 0; [DisplayName("검색 여부")] [Comment("검색 여부")] [Required(ErrorMessage = "{0}는 필수입니다.")] public bool IsSearch { get; set; } = false; [DisplayName("사용 여부")] [Comment("사용 여부")] [Required(ErrorMessage = "{0}는 필수입니다.")] public bool IsActive { get; set; } = false; [DisplayName("게시글 수")] [Comment("게시글 수")] [Range(0, int.MaxValue, ErrorMessage = "{0}은 {2} 이상, {1} 이하로 입력하세요.")] public int Posts { get; set; } = 0; [DisplayName("댓글 수")] [Comment("댓글 수")] [Range(0, int.MaxValue, ErrorMessage = "{0}은 {2} 이상, {1} 이하로 입력하세요.")] public int Comments { get; set; } = 0; [DisplayName("수정 일시")] [Comment("수정 일시")] [DataType(DataType.DateTime)] public DateTime? UpdatedAt { get; set; } = null; [DisplayName("등록 일시")] [Comment("등록 일시")] [DataType(DataType.DateTime)] public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } }