PostBookmark.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Domain.Entities.Forum.Boards;
  2. using Domain.Entities.Members;
  3. using Microsoft.EntityFrameworkCore;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.ComponentModel.DataAnnotations.Schema;
  7. namespace Domain.Entities.Forum.Posts
  8. {
  9. [Table("PostBookmark")]
  10. [Index(nameof(BoardID))]
  11. [Index(nameof(PostID))]
  12. [Index(nameof(MemberID))]
  13. [Index(nameof(PostID), nameof(MemberID), IsUnique = true)]
  14. [Index(nameof(BoardID), nameof(PostID), nameof(CreatedAt))]
  15. [Index(nameof(BoardID), nameof(MemberID), nameof(CreatedAt))]
  16. [Index(nameof(BoardID), nameof(PostID), nameof(MemberID), nameof(CreatedAt))]
  17. public class PostBookmark
  18. {
  19. [ForeignKey(nameof(BoardID))]
  20. public Board Board { get; set; } = null!;
  21. [ForeignKey(nameof(PostID))]
  22. public Post Post { get; set; } = null!;
  23. [ForeignKey(nameof(MemberID))]
  24. public Member Member { get; set; } = null!;
  25. [Key]
  26. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  27. [DisplayName("PK")]
  28. [Comment("PK")]
  29. public int ID { get; set; }
  30. [DisplayName("게시판 ID")]
  31. [Comment("게시판 ID")]
  32. public int BoardID { get; set; }
  33. [DisplayName("게시글 ID")]
  34. [Comment("게시글 ID")]
  35. public int PostID { get; set; }
  36. [DisplayName("회원 ID")]
  37. [Comment("회원 ID")]
  38. public int MemberID { get; set; }
  39. [DisplayName("IP Address")]
  40. [Comment("IP Address")]
  41. [MaxLength(15)]
  42. public string? IpAddress { get; set; } = null;
  43. [DisplayName("User-agent")]
  44. [Comment("User-agent")]
  45. [MaxLength(255)]
  46. public string? UserAgent { get; set; } = null;
  47. [DisplayName("등록 일시")]
  48. [Comment("등록 일시")]
  49. [DataType(DataType.DateTime)]
  50. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  51. }
  52. }