FileStoragePath.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. Crypto // 코인/토큰
  22. }
  23. // 추가 경로 값
  24. public enum UploadAddition
  25. {
  26. // 기본 설정
  27. BlockAlertContent = 1,
  28. MaintenanceContent,
  29. // 게시판
  30. ListHeaderContent, // 게시판 목록 - 상단 내용
  31. ListFooterContent, // 게시판 목록 - 하단 내용
  32. PostWriteEmailNotifyContent , // 게시판 알림 양식 - 게시글 작성 시 내용
  33. CommentWriteEmailNotifyContent, // 게시판 알림 양식 - 댓글 작성 시 내용
  34. ReplyWriteEmailNotifyContent, // 게시판 알림 양식 - 답글 작성 시 내용
  35. WriteHeaderContent, // 게시판 작성 - 상단 내용
  36. WriteFooterContent, // 게시판 작성 - 하단 내용
  37. WriteDefaultContent, // 게시판 작성 - 작성란 기본 내용
  38. // 알림 발송 양식- 이메일
  39. RegisterEmailFormContent,
  40. RegistrationEmailFormContent,
  41. ResetPasswordEmailFormContent,
  42. ChangedPasswordEmailFormContent,
  43. WithdrawEmailFormContent,
  44. EmailVerifyFormContent,
  45. ChangedEmailFormContent
  46. }
  47. public readonly record struct FileStoragePath(UploadTarget Target, UploadFolder Folder, int? ID = null, UploadAddition? Addition = null)
  48. {
  49. public string ToRelativePath()
  50. {
  51. string t = Target switch
  52. {
  53. UploadTarget.Editor => "editors",
  54. UploadTarget.Upload => "uploads",
  55. _ => throw new ArgumentNullException(nameof(Target))
  56. };
  57. string f = Folder switch
  58. {
  59. UploadFolder.Basic => "basic",
  60. UploadFolder.EmailTemplate => "template/email",
  61. UploadFolder.Document => "document",
  62. UploadFolder.Faq => "faq",
  63. UploadFolder.Popup => "popup",
  64. UploadFolder.Banner => "banner",
  65. UploadFolder.MemberGrade => "member/grade",
  66. UploadFolder.MemberThumb => "member/thumb",
  67. UploadFolder.MemberIcon => "member/icon",
  68. UploadFolder.Board => "board",
  69. UploadFolder.Post => "post",
  70. UploadFolder.Crypto => "crypto",
  71. _ => string.Empty
  72. };
  73. var a = Addition.HasValue ? ((int)Addition.Value).ToString() : string.Empty;
  74. return string.Join('/', new[] { t, f, ID.ToString(), a }.Where(x => !string.IsNullOrWhiteSpace(x)));
  75. }
  76. }
  77. }