CommentImage.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using Domain.Entities.Forum.Boards;
  2. using Domain.Entities.Forum.Posts;
  3. using Microsoft.EntityFrameworkCore;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.ComponentModel.DataAnnotations.Schema;
  6. namespace Domain.Entities.Forum.Comments
  7. {
  8. [Table("CommentImage")]
  9. [Index(nameof(BoardID))]
  10. [Index(nameof(PostID))]
  11. [Index(nameof(CommentID))]
  12. [Index(nameof(UUID), IsUnique = true)]
  13. [Index(nameof(CommentID), nameof(HashedName))]
  14. [Index(nameof(CommentID), nameof(HashedName), nameof(IsDisabled))]
  15. [Index(nameof(CommentID), nameof(HashedName), nameof(IsDisabled), nameof(ID))]
  16. public class CommentImage
  17. {
  18. [ForeignKey(nameof(BoardID))]
  19. public virtual Board Board { get; set; } = default!;
  20. [ForeignKey(nameof(PostID))]
  21. public virtual Post Post { get; set; } = default!;
  22. [ForeignKey(nameof(CommentID))]
  23. public virtual Comment Comment { get; set; } = default!;
  24. [Key]
  25. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  26. [Comment("PK")]
  27. public int ID { get; set; }
  28. [Comment("게시판 ID")]
  29. public int BoardID { get; set; }
  30. [Comment("게시글 ID")]
  31. public int PostID { get; set; }
  32. [Comment("댓글 ID")]
  33. public int CommentID { get; set; }
  34. [Comment("이미지 ID")]
  35. public Guid UUID { get; set; } = Guid.NewGuid();
  36. [Comment("원본 파일명")]
  37. [StringLength(255)]
  38. public string FileName { get; set; } = null!;
  39. [Comment("저장 파일명")]
  40. [StringLength(255)]
  41. public string HashedName { get; set; } = null!;
  42. [Comment("저장 경로")]
  43. [StringLength(500)]
  44. public string Path { get; set; } = null!;
  45. [Comment("URL")]
  46. [StringLength(1000)]
  47. public string Url { get; set; } = null!;
  48. [Comment("확장자")]
  49. [StringLength(10)]
  50. public string? Extension { get; set; }
  51. [Comment("MIME 타입")]
  52. [StringLength(100)]
  53. public string? ContentType { get; set; }
  54. [Comment("용량(byte)")]
  55. public long? Size { get; set; }
  56. [Comment("가로 해상도(px)")]
  57. public short? Width { get; set; }
  58. [Comment("세로 해상도(px)")]
  59. public short? Height { get; set; }
  60. [Comment("비활성 여부")]
  61. public bool IsDisabled { get; set; } = false;
  62. [Comment("비활성 일시")]
  63. public DateTime? DisabledAt { get; set; }
  64. [Comment("등록 일시")]
  65. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  66. }
  67. }