PostReaction.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Domain.Entities.Forum.Boards;
  2. using Domain.Entities.Members;
  3. using Domain.Entities.Forum.ValueObject;
  4. using Microsoft.EntityFrameworkCore;
  5. using System.ComponentModel;
  6. using System.ComponentModel.DataAnnotations;
  7. using System.ComponentModel.DataAnnotations.Schema;
  8. namespace Domain.Entities.Forum.Posts
  9. {
  10. [Table("PostReaction")]
  11. [Index(nameof(BoardID))]
  12. [Index(nameof(PostID))]
  13. [Index(nameof(MemberID))]
  14. [Index(nameof(Reaction))]
  15. [Index(nameof(PostID), nameof(MemberID), IsUnique = true)]
  16. public class PostReaction
  17. {
  18. [ForeignKey(nameof(BoardID))]
  19. public Board Board { get; set; } = null!;
  20. [ForeignKey(nameof(PostID))]
  21. public Post Post { get; set; } = null!;
  22. [ForeignKey(nameof(MemberID))]
  23. public Member Member { get; set; } = null!;
  24. [Key]
  25. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  26. [DisplayName("PK")]
  27. [Comment("PK")]
  28. public int ID { get; set; }
  29. [DisplayName("게시판 ID")]
  30. [Comment("게시판 ID")]
  31. public int BoardID { get; set; }
  32. [DisplayName("게시글 ID")]
  33. [Comment("게시글 ID")]
  34. public int PostID { get; set; }
  35. [DisplayName("회원 ID")]
  36. [Comment("회원 ID")]
  37. public int MemberID { get; set; }
  38. [DisplayName("반응 구분")]
  39. [Comment("반응 구분")]
  40. [EnumDataType(typeof(Reaction), ErrorMessage = "{0}는 {1} 중 하나를 선택하세요.")]
  41. public Reaction Reaction { get; set; }
  42. [DisplayName("IP Address")]
  43. [Comment("IP Address")]
  44. [MaxLength(50)]
  45. public string? IpAddress { get; set; } = null;
  46. [DisplayName("User-agent")]
  47. [Comment("User-agent")]
  48. [MaxLength(255)]
  49. public string? UserAgent { get; set; } = null;
  50. [DisplayName("수정 일시")]
  51. [Comment("수정 일시")]
  52. [DataType(DataType.DateTime)]
  53. public DateTime? UpdatedAt { get; set; } = null;
  54. [DisplayName("등록 일시")]
  55. [Comment("등록 일시")]
  56. [DataType(DataType.DateTime)]
  57. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  58. }
  59. }