Post.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using Domain.Entities.Forum.Boards;
  2. using Domain.Entities.Forum.Comments;
  3. using Domain.Entities.Forum.Logs;
  4. using Domain.Entities.Members;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.ComponentModel.DataAnnotations.Schema;
  7. namespace Domain.Entities.Forum.Posts;
  8. public class Post
  9. {
  10. [ForeignKey(nameof(BoardID))]
  11. public virtual Board Board { get; set; } = null!;
  12. [ForeignKey(nameof(BoardPrefixID))]
  13. public virtual BoardPrefix? BoardPrefix { get; set; }
  14. [ForeignKey(nameof(MemberID))]
  15. public virtual Member? Member { get; set; } = null!;
  16. // 게시글 댓글
  17. public virtual List<Comment> Comment { get; set; } = [];
  18. // 게시글 이미지
  19. public virtual List<PostImage> PostImage { get; set; } = [];
  20. // 게시글 미디어
  21. public virtual List<PostMedia> PostMedia { get; set; } = [];
  22. // 게시글 파일
  23. public virtual List<PostFile> PostFile { get; set; } = [];
  24. // 게시글 링크
  25. public virtual List<PostLink> PostLink { get; set; } = [];
  26. // 게시글 태그
  27. public virtual List<PostTag> PostTag { get; set; } = [];
  28. // 게시글 반응
  29. public virtual List<PostReaction> PostReaction { get; set; } = [];
  30. // 게시글 즐겨찾기
  31. public virtual List<PostBookmark> PostBookmark { get; set; } = [];
  32. // 게시글 신고
  33. public virtual List<PostReport> PostReport { get; set; } = [];
  34. // 게시글 파일 다운로드 기록
  35. public virtual List<PostFileDownLog> PostFileDownLog { get; set; } = [];
  36. // 게시글 링크 클릭 기록
  37. public virtual List<PostLinkClickLog> PostLinkClickLog { get; set; } = [];
  38. // 게시글 변경 기록
  39. public virtual List<PostUpdateLog> PostUpdateLog { get; set; } = [];
  40. [Key]
  41. public int ID { get; set; }
  42. public int BoardID { get; set; }
  43. public int? BoardPrefixID { get; set; }
  44. public int? MemberID { get; set; }
  45. public string Subject { get; set; } = default!;
  46. public string Content { get; set; } = default!;
  47. public string? SID { get; set; }
  48. public string? Email { get; set; }
  49. public string? Name { get; set; }
  50. public string? Thumbnail { get; set; }
  51. public bool IsReply { get; set; } = false;
  52. public bool IsAnonymous { get; set; } = false;
  53. public bool IsSecret { get; set; } = false;
  54. public bool IsNotice { get; set; } = false;
  55. public bool IsSpeaker { get; set; } = false;
  56. public bool IsDeleted { get; set; } = false;
  57. public int Views { get; set; } = 0;
  58. public int Likes { get; set; } = 0;
  59. public int Dislikes { get; set; } = 0;
  60. public int Comments { get; set; } = 0;
  61. public int Bookmarks { get; set; } = 0;
  62. public int Reports { get; set; } = 0;
  63. public byte Images { get; set; } = 0;
  64. public byte Medias { get; set; } = 0;
  65. public byte Files { get; set; } = 0;
  66. public byte Tags { get; set; } = 0;
  67. public string? IpAddress { get; set; }
  68. public string? UserAgent { get; set; }
  69. public DateTime? LastReplyUpdatedAt { get; set; }
  70. public DateTime? LastCommentUpdatedAt { get; set; }
  71. public DateTime? DeletedAt { get; set; }
  72. public DateTime? UpdatedAt { get; set; }
  73. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  74. }