Comment.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Microsoft.EntityFrameworkCore;
  2. using System.ComponentModel;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. using bitforum.Models.Account;
  6. namespace bitforum.Models.BBS
  7. {
  8. [Table("Comment")]
  9. [Index(nameof(ParentID), Name = "IX_Comment_ParentID")]
  10. [Index(nameof(SID), Name = "IX_Comment_SID")]
  11. [Index(nameof(Email), Name = "IX_Comment_Email")]
  12. [Index(nameof(Name), Name = "IX_Comment_Name")]
  13. [Index(nameof(IsSecret), Name = "IX_Comment_IsSecret")]
  14. [Index(nameof(IsDeleted), Name = "IX_Comment_IsDeleted")]
  15. [Index(nameof(Likes), Name = "IX_Comment_Likes")]
  16. [Index(nameof(Dislikes), Name = "IX_Comment_Dislikes")]
  17. [Index(nameof(Blames), Name = "IX_Comment_Blames")]
  18. [Index(nameof(Replies), Name = "IX_Comment_Replies")]
  19. [Index(nameof(CreatedAt), Name = "IX_Comment_CreatedAt")]
  20. public class Comment
  21. {
  22. [ForeignKey("BoardID")]
  23. public Board Board { get; set; } = null!;
  24. [ForeignKey("PostID")]
  25. public Post Post { get; set; } = null!;
  26. [ForeignKey("MemberID")]
  27. public Member? Member { get; set; }
  28. public Comment? Parent { get; set; } = null;
  29. public ICollection<Comment> Reply { get; set; } = new List<Comment>();
  30. [Key]
  31. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  32. [DisplayName("PK")]
  33. [Comment("PK")]
  34. public int ID { get; set; }
  35. [Required]
  36. [DisplayName("게시판 ID")]
  37. [Comment("게시판 ID")]
  38. public int BoardID { get; set; }
  39. [Required]
  40. [DisplayName("게시글 ID")]
  41. [Comment("게시글 ID")]
  42. public int PostID { get; set; }
  43. [DisplayName("회원 ID")]
  44. [Comment("회원 ID")]
  45. public int? MemberID { get; set; } = null;
  46. [DisplayName("부모 댓글 ID")]
  47. [Comment("부모 댓글 ID")]
  48. public int? ParentID { get; set; } = null;
  49. [Required]
  50. [DisplayName("댓글 깊이")]
  51. [Comment("댓글 깊이")]
  52. public ushort Depth { get; set; } = 0;
  53. [Required]
  54. [DisplayName("댓글 내용")]
  55. [Comment("댓글 내용")]
  56. [StringLength(4000)]
  57. public string Content { get; set; } = null!;
  58. [DisplayName("회원 SID")]
  59. [Comment("회원 SID")]
  60. [StringLength(20)]
  61. public string? SID { get; set; } = null;
  62. [DisplayName("회원 이메일")]
  63. [Comment("회원 이메일")]
  64. [StringLength(60)]
  65. public string? Email { get; set; } = null;
  66. [DisplayName("회원 이름")]
  67. [Comment("회원 이름")]
  68. [StringLength(20)]
  69. public string? Name { get; set; } = null;
  70. [DisplayName("댓글 비밀번호")]
  71. [Comment("댓글 비밀번호")]
  72. [StringLength(255)]
  73. public string? Password { get; set; } = null;
  74. [DisplayName("비밀글 여부")]
  75. [Comment("비밀글 여부")]
  76. public bool IsSecret { get; set; } = false;
  77. [DisplayName("삭제 여부")]
  78. [Comment("삭제 여부")]
  79. public bool IsDeleted { get; set; } = false;
  80. [DisplayName("좋아요")]
  81. [Comment("좋아요")]
  82. public uint Likes { get; set; } = 0;
  83. [DisplayName("싫어요")]
  84. [Comment("싫어요")]
  85. public uint Dislikes { get; set; } = 0;
  86. [DisplayName("신고 수")]
  87. [Comment("신고 수")]
  88. public uint Blames { get; set; } = 0;
  89. [DisplayName("대댓글 수")]
  90. [Comment("대댓글 수")]
  91. public uint Replies { get; set; } = 0;
  92. [DisplayName("IP")]
  93. [Comment("IP")]
  94. [StringLength(50)]
  95. public string IpAddress { get; set; } = null!;
  96. [DisplayName("User-Agent")]
  97. [Comment("User-Agent")]
  98. [StringLength(255)]
  99. public string UserAgent { get; set; } = null!;
  100. [DisplayName("삭제 일시")]
  101. [Comment("삭제 일시")]
  102. [DataType(DataType.DateTime)]
  103. public DateTime? DeletedAt { get; set; } = null;
  104. [DisplayName("수정 일시")]
  105. [Comment("수정 일시")]
  106. [DataType(DataType.DateTime)]
  107. public DateTime? UpdatedAt { get; set; } = null;
  108. [DisplayName("등록 일시")]
  109. [Comment("등록 일시")]
  110. [DataType(DataType.DateTime)]
  111. public DateTime CreatedAt { get; set; }
  112. }
  113. }