FileStoragePath.cs 3.4 KB

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