FileStoragePath.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. namespace SharedKernel.Storage;
  2. public enum UploadTarget
  3. {
  4. Editor = 1,
  5. Upload
  6. }
  7. public enum UploadFolder
  8. {
  9. Basic = 1, // 기본 설정
  10. EmailTemplate, // 알림 발송 양식 - 이메일
  11. Document, // 문서
  12. Faq, // 자주 묻는 질문
  13. Popup, // 팝업
  14. Banner, // 배너
  15. MemberGrade, // 회원등급
  16. MemberThumb, // 회원 사진
  17. MemberIcon, // 회원 아이콘
  18. MemberBanner, // 회원 배너
  19. Board, // 게시판
  20. Post, // 게시글
  21. Comment, // 댓글
  22. Crypto, // 코인/토큰
  23. DonationAlert, // 후원 알림 미디어
  24. Feed, // 피드 포스트 이미지
  25. ChannelTitle, // 채널 칭호 아이콘
  26. StoreGame, // 상점 게임 썸네일
  27. StoreProduct, // 상점 상품 썸네일
  28. StoreGameDetail // 상점 게임 상세 이미지 갤러리
  29. }
  30. // 추가 경로 값
  31. public enum UploadAddition
  32. {
  33. // 기본 설정
  34. BlockAlertContent = 1,
  35. MaintenanceContent,
  36. // 게시판
  37. ListHeaderContent, // 게시판 목록 - 상단 내용
  38. ListFooterContent, // 게시판 목록 - 하단 내용
  39. PostWriteEmailNotifyContent , // 게시판 알림 양식 - 게시글 작성 시 내용
  40. CommentWriteEmailNotifyContent, // 게시판 알림 양식 - 댓글 작성 시 내용
  41. ReplyWriteEmailNotifyContent, // 게시판 알림 양식 - 답글 작성 시 내용
  42. WriteHeaderContent, // 게시판 작성 - 상단 내용
  43. WriteFooterContent, // 게시판 작성 - 하단 내용
  44. WriteDefaultContent, // 게시판 작성 - 작성란 기본 내용
  45. // 알림 발송 양식- 이메일
  46. RegisterEmailFormContent,
  47. RegistrationEmailFormContent,
  48. ResetPasswordEmailFormContent,
  49. ChangedPasswordEmailFormContent,
  50. WithdrawEmailFormContent,
  51. WithdrawVerifyEmailFormContent,
  52. EmailVerifyFormContent,
  53. ChangedEmailFormContent
  54. }
  55. public readonly record struct FileStoragePath(UploadTarget Target, UploadFolder Folder, int? ID = null, UploadAddition? Addition = null)
  56. {
  57. public string ToRelativePath()
  58. {
  59. string t = Target switch
  60. {
  61. UploadTarget.Editor => "editors",
  62. UploadTarget.Upload => "uploads",
  63. _ => throw new ArgumentNullException(nameof(Target))
  64. };
  65. string f = Folder switch
  66. {
  67. UploadFolder.Basic => "basic",
  68. UploadFolder.EmailTemplate => "template/email",
  69. UploadFolder.Document => "document",
  70. UploadFolder.Faq => "faq",
  71. UploadFolder.Popup => "popup",
  72. UploadFolder.Banner => "banner",
  73. UploadFolder.MemberGrade => "member/grade",
  74. UploadFolder.MemberThumb => "member/thumb",
  75. UploadFolder.MemberIcon => "member/icon",
  76. UploadFolder.MemberBanner => "member/banner",
  77. UploadFolder.Board => "board",
  78. UploadFolder.Post => "post",
  79. UploadFolder.Comment => "comment",
  80. UploadFolder.Crypto => "crypto",
  81. UploadFolder.DonationAlert => "donation/alert",
  82. UploadFolder.Feed => "feed",
  83. UploadFolder.ChannelTitle => "channel/title",
  84. UploadFolder.StoreGame => "store/game",
  85. UploadFolder.StoreProduct => "store/product",
  86. UploadFolder.StoreGameDetail => "store/game/detail",
  87. _ => string.Empty
  88. };
  89. var a = Addition.HasValue ? ((int)Addition.Value).ToString() : string.Empty;
  90. return string.Join('/', new[] { t, f, ID.ToString(), a }.Where(x => !string.IsNullOrWhiteSpace(x)));
  91. }
  92. }