@webiny/tenant-manager 6.3.0 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/TenantManager.js +8 -9
  2. package/TenantManager.js.map +1 -1
  3. package/admin/CurrentTenant/CurrentTenant.js +15 -24
  4. package/admin/CurrentTenant/CurrentTenant.js.map +1 -1
  5. package/admin/CurrentTenant/CurrentTenantGateway.js +18 -19
  6. package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -1
  7. package/admin/CurrentTenant/CurrentTenantPresenter.js +26 -23
  8. package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -1
  9. package/admin/CurrentTenant/CurrentTenantRepository.js +30 -29
  10. package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -1
  11. package/admin/CurrentTenant/abstractions.js +4 -12
  12. package/admin/CurrentTenant/abstractions.js.map +1 -1
  13. package/admin/CurrentTenant/feature.js +15 -14
  14. package/admin/CurrentTenant/feature.js.map +1 -1
  15. package/admin/CurrentTenant/useCurrentTenant.js +11 -16
  16. package/admin/CurrentTenant/useCurrentTenant.js.map +1 -1
  17. package/admin/CurrentTenantProvider.js +5 -8
  18. package/admin/CurrentTenantProvider.js.map +1 -1
  19. package/admin/DisableTenant/DisableTenantGateway.js +21 -22
  20. package/admin/DisableTenant/DisableTenantGateway.js.map +1 -1
  21. package/admin/DisableTenant/DisableTenantRepository.js +13 -10
  22. package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
  23. package/admin/DisableTenant/DisableTenantUseCase.js +13 -10
  24. package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -1
  25. package/admin/DisableTenant/abstractions.js +4 -12
  26. package/admin/DisableTenant/abstractions.js.map +1 -1
  27. package/admin/DisableTenant/feature.js +15 -14
  28. package/admin/DisableTenant/feature.js.map +1 -1
  29. package/admin/DisableTenant/index.js +0 -2
  30. package/admin/DisableTenant/useDisableTenant.js +20 -20
  31. package/admin/DisableTenant/useDisableTenant.js.map +1 -1
  32. package/admin/EnableTenant/EnableTenantGateway.js +21 -22
  33. package/admin/EnableTenant/EnableTenantGateway.js.map +1 -1
  34. package/admin/EnableTenant/EnableTenantRepository.js +13 -10
  35. package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
  36. package/admin/EnableTenant/EnableTenantUseCase.js +13 -10
  37. package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -1
  38. package/admin/EnableTenant/abstractions.js +4 -12
  39. package/admin/EnableTenant/abstractions.js.map +1 -1
  40. package/admin/EnableTenant/feature.js +15 -14
  41. package/admin/EnableTenant/feature.js.map +1 -1
  42. package/admin/EnableTenant/index.js +0 -2
  43. package/admin/EnableTenant/useEnableTenant.js +19 -18
  44. package/admin/EnableTenant/useEnableTenant.js.map +1 -1
  45. package/admin/Extension.js +32 -36
  46. package/admin/Extension.js.map +1 -1
  47. package/admin/IsRootTenant.js +14 -32
  48. package/admin/IsRootTenant.js.map +1 -1
  49. package/admin/SecurityPermission.js +11 -14
  50. package/admin/SecurityPermission.js.map +1 -1
  51. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +36 -37
  52. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -1
  53. package/admin/TenantEntryList/EnableTenant/EnableTenant.js +10 -14
  54. package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -1
  55. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +34 -33
  56. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
  57. package/admin/TenantEntryList/FolderNameCell.js +19 -24
  58. package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
  59. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +10 -14
  60. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -1
  61. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +3 -2
  62. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -1
  63. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +34 -38
  64. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
  65. package/admin/TenantEntryList/ManageTenant.js +15 -16
  66. package/admin/TenantEntryList/ManageTenant.js.map +1 -1
  67. package/admin/TenantEntryList/TenantCell.js +15 -30
  68. package/admin/TenantEntryList/TenantCell.js.map +1 -1
  69. package/admin/TenantEntryList/TenantNameCell.js +35 -45
  70. package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
  71. package/admin/TenantEntryList.js +43 -60
  72. package/admin/TenantEntryList.js.map +1 -1
  73. package/admin/TenantSelector.js +31 -35
  74. package/admin/TenantSelector.js.map +1 -1
  75. package/admin/domain/permissionsSchema.js +4 -3
  76. package/admin/domain/permissionsSchema.js.map +1 -1
  77. package/admin/features/permissions/abstractions.js +2 -1
  78. package/admin/features/permissions/abstractions.js.map +1 -1
  79. package/admin/features/permissions/feature.js +2 -1
  80. package/admin/features/permissions/feature.js.map +1 -1
  81. package/admin/types.js +0 -3
  82. package/api/Extension.js +20 -23
  83. package/api/Extension.js.map +1 -1
  84. package/api/domain/TenantId.js +5 -7
  85. package/api/domain/TenantId.js.map +1 -1
  86. package/api/domain/TenantModel.js +59 -37
  87. package/api/domain/TenantModel.js.map +1 -1
  88. package/api/domain/TenantModelExtension.js +2 -2
  89. package/api/domain/TenantModelExtension.js.map +1 -1
  90. package/api/domain/errors.js +49 -54
  91. package/api/domain/errors.js.map +1 -1
  92. package/api/features/AddCmsPermissions/AddCmsPermissions.js +40 -31
  93. package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
  94. package/api/features/AddCmsPermissions/feature.js +6 -5
  95. package/api/features/AddCmsPermissions/feature.js.map +1 -1
  96. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +67 -85
  97. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -1
  98. package/api/features/CreateAndInstallTenant/abstractions.js +2 -6
  99. package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -1
  100. package/api/features/CreateAndInstallTenant/feature.js +6 -6
  101. package/api/features/CreateAndInstallTenant/feature.js.map +1 -1
  102. package/api/features/CreateTenant/CreateTenantRepository.js +33 -38
  103. package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -1
  104. package/api/features/CreateTenant/CreateTenantUseCase.js +29 -32
  105. package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -1
  106. package/api/features/CreateTenant/abstractions.js +3 -8
  107. package/api/features/CreateTenant/abstractions.js.map +1 -1
  108. package/api/features/CreateTenant/feature.js +7 -9
  109. package/api/features/CreateTenant/feature.js.map +1 -1
  110. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +17 -27
  111. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -1
  112. package/api/features/DeleteTenantOnEntryDelete/feature.js +6 -6
  113. package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -1
  114. package/api/features/DisableTenant/DisableTenantUseCase.js +41 -53
  115. package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -1
  116. package/api/features/DisableTenant/abstractions.js +2 -1
  117. package/api/features/DisableTenant/abstractions.js.map +1 -1
  118. package/api/features/DisableTenant/events.js +17 -12
  119. package/api/features/DisableTenant/events.js.map +1 -1
  120. package/api/features/DisableTenant/feature.js +6 -6
  121. package/api/features/DisableTenant/feature.js.map +1 -1
  122. package/api/features/EnableTenant/EnableTenantUseCase.js +43 -55
  123. package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -1
  124. package/api/features/EnableTenant/abstractions.js +2 -1
  125. package/api/features/EnableTenant/abstractions.js.map +1 -1
  126. package/api/features/EnableTenant/events.js +17 -12
  127. package/api/features/EnableTenant/events.js.map +1 -1
  128. package/api/features/EnableTenant/feature.js +6 -6
  129. package/api/features/EnableTenant/feature.js.map +1 -1
  130. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +21 -24
  131. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -1
  132. package/api/features/GetCurrentTenant/abstractions.js +2 -7
  133. package/api/features/GetCurrentTenant/abstractions.js.map +1 -1
  134. package/api/features/GetCurrentTenant/feature.js +6 -6
  135. package/api/features/GetCurrentTenant/feature.js.map +1 -1
  136. package/api/features/GetTenantById/GetTenantByIdRepository.js +31 -36
  137. package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -1
  138. package/api/features/GetTenantById/GetTenantByIdUseCase.js +15 -19
  139. package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
  140. package/api/features/GetTenantById/abstractions.js +3 -12
  141. package/api/features/GetTenantById/abstractions.js.map +1 -1
  142. package/api/features/GetTenantById/feature.js +7 -9
  143. package/api/features/GetTenantById/feature.js.map +1 -1
  144. package/api/features/UpdateTenant/UpdateTenantRepository.js +40 -47
  145. package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -1
  146. package/api/features/UpdateTenant/UpdateTenantUseCase.js +15 -15
  147. package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
  148. package/api/features/UpdateTenant/abstractions.js +3 -12
  149. package/api/features/UpdateTenant/abstractions.js.map +1 -1
  150. package/api/features/UpdateTenant/feature.js +7 -9
  151. package/api/features/UpdateTenant/feature.js.map +1 -1
  152. package/api/graphql/CreateTenantSchema.js +53 -55
  153. package/api/graphql/CreateTenantSchema.js.map +1 -1
  154. package/api/graphql/DisableTenantSchema.js +20 -24
  155. package/api/graphql/DisableTenantSchema.js.map +1 -1
  156. package/api/graphql/EnableTenantSchema.js +20 -24
  157. package/api/graphql/EnableTenantSchema.js.map +1 -1
  158. package/api/graphql/GetCurrentTenantSchema.js +24 -28
  159. package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
  160. package/api/graphql/InstallTenantSchema.js +26 -33
  161. package/api/graphql/InstallTenantSchema.js.map +1 -1
  162. package/exports/admin/tenancy.js +1 -5
  163. package/exports/api/tenant-manager.js +0 -2
  164. package/index.js +0 -2
  165. package/package.json +16 -16
  166. package/shared/Tenant.js +23 -22
  167. package/shared/Tenant.js.map +1 -1
  168. package/shared/constants.js +2 -1
  169. package/shared/constants.js.map +1 -1
  170. package/admin/DisableTenant/index.js.map +0 -1
  171. package/admin/EnableTenant/index.js.map +0 -1
  172. package/admin/types.js.map +0 -1
  173. package/exports/admin/tenancy.js.map +0 -1
  174. package/exports/api/tenant-manager.js.map +0 -1
  175. package/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Result","Tenant","TENANT_MODEL_ID","TenantModelNotFoundError","TenantNotFoundError","TenantPersistenceError","GetTenantByIdRepository","RepositoryAbstraction","TenantContext","GetModelUseCase","GetEntryByIdUseCase","EntryId","constructor","tenantContext","getModelUseCase","getEntryUseCase","execute","id","entryId","from","modelResult","isFail","fail","entryResult","withRootTenant","value","toString","tenantEntry","tenantDto","values","ok","error","createImplementation","implementation","dependencies"],"sources":["GetTenantByIdRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { Tenant, TenantDto, TenantValues } from \"~/shared/Tenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\nimport { GetTenantByIdRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/exports/api/tenancy.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js\";\nimport { EntryId } from \"@webiny/api-headless-cms/domain/contentEntry/EntryId.js\";\n\nclass GetTenantByIdRepository implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private getModelUseCase: GetModelUseCase.Interface,\n private getEntryUseCase: GetEntryByIdUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<Tenant, RepositoryAbstraction.Error>> {\n try {\n const entryId = EntryId.from(id);\n\n // Get the tenant model\n const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(new TenantModelNotFoundError());\n }\n\n // Get the tenant entry\n const entryResult = await this.tenantContext.withRootTenant(() => {\n return this.getEntryUseCase.execute<TenantValues>(\n modelResult.value,\n entryId.toString()\n );\n });\n\n if (entryResult.isFail()) {\n return Result.fail(new TenantNotFoundError(id));\n }\n\n const tenantEntry = entryResult.value;\n\n const tenantDto: TenantDto = {\n id: tenantEntry.entryId,\n values: tenantEntry.values\n };\n\n return Result.ok(Tenant.from(tenantDto));\n } catch (error) {\n return Result.fail(new TenantPersistenceError(error as Error));\n }\n }\n}\n\nexport default RepositoryAbstraction.createImplementation({\n implementation: GetTenantByIdRepository,\n dependencies: [TenantContext, GetModelUseCase, GetEntryByIdUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,MAAM;AACf,SAASC,eAAe;AACxB,SACIC,wBAAwB,EACxBC,mBAAmB,EACnBC,sBAAsB;AAE1B,SAASC,uBAAuB,IAAIC,qBAAqB;AACzD,SAASC,aAAa,QAAQ,yCAAyC;AACvE,SAASC,eAAe,QAAQ,yEAAyE;AACzG,SAASC,mBAAmB,QAAQ,6EAA6E;AACjH,SAASC,OAAO,QAAQ,yDAAyD;AAEjF,MAAML,uBAAuB,CAA4C;EACrEM,WAAWA,CACCC,aAAsC,EACtCC,eAA0C,EAC1CC,eAA8C,EACxD;IAAA,KAHUF,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,eAA8C,GAA9CA,eAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAwD;IAC5E,IAAI;MACA,MAAMC,OAAO,GAAGP,OAAO,CAACQ,IAAI,CAACF,EAAE,CAAC;;MAEhC;MACA,MAAMG,WAAW,GAAG,MAAM,IAAI,CAACN,eAAe,CAACE,OAAO,CAACd,eAAe,CAAC;MACvE,IAAIkB,WAAW,CAACC,MAAM,CAAC,CAAC,EAAE;QACtB,OAAOrB,MAAM,CAACsB,IAAI,CAAC,IAAInB,wBAAwB,CAAC,CAAC,CAAC;MACtD;;MAEA;MACA,MAAMoB,WAAW,GAAG,MAAM,IAAI,CAACV,aAAa,CAACW,cAAc,CAAC,MAAM;QAC9D,OAAO,IAAI,CAACT,eAAe,CAACC,OAAO,CAC/BI,WAAW,CAACK,KAAK,EACjBP,OAAO,CAACQ,QAAQ,CAAC,CACrB,CAAC;MACL,CAAC,CAAC;MAEF,IAAIH,WAAW,CAACF,MAAM,CAAC,CAAC,EAAE;QACtB,OAAOrB,MAAM,CAACsB,IAAI,CAAC,IAAIlB,mBAAmB,CAACa,EAAE,CAAC,CAAC;MACnD;MAEA,MAAMU,WAAW,GAAGJ,WAAW,CAACE,KAAK;MAErC,MAAMG,SAAoB,GAAG;QACzBX,EAAE,EAAEU,WAAW,CAACT,OAAO;QACvBW,MAAM,EAAEF,WAAW,CAACE;MACxB,CAAC;MAED,OAAO7B,MAAM,CAAC8B,EAAE,CAAC7B,MAAM,CAACkB,IAAI,CAACS,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,OAAOG,KAAK,EAAE;MACZ,OAAO/B,MAAM,CAACsB,IAAI,CAAC,IAAIjB,sBAAsB,CAAC0B,KAAc,CAAC,CAAC;IAClE;EACJ;AACJ;AAEA,eAAexB,qBAAqB,CAACyB,oBAAoB,CAAC;EACtDC,cAAc,EAAE3B,uBAAuB;EACvC4B,YAAY,EAAE,CAAC1B,aAAa,EAAEC,eAAe,EAAEC,mBAAmB;AACtE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetTenantById/GetTenantByIdRepository.js","sources":["../../../../src/api/features/GetTenantById/GetTenantByIdRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { Tenant, TenantDto, TenantValues } from \"~/shared/Tenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\nimport { GetTenantByIdRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/exports/api/tenancy.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js\";\nimport { EntryId } from \"@webiny/api-headless-cms/domain/contentEntry/EntryId.js\";\n\nclass GetTenantByIdRepository implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private getModelUseCase: GetModelUseCase.Interface,\n private getEntryUseCase: GetEntryByIdUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<Tenant, RepositoryAbstraction.Error>> {\n try {\n const entryId = EntryId.from(id);\n\n // Get the tenant model\n const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(new TenantModelNotFoundError());\n }\n\n // Get the tenant entry\n const entryResult = await this.tenantContext.withRootTenant(() => {\n return this.getEntryUseCase.execute<TenantValues>(\n modelResult.value,\n entryId.toString()\n );\n });\n\n if (entryResult.isFail()) {\n return Result.fail(new TenantNotFoundError(id));\n }\n\n const tenantEntry = entryResult.value;\n\n const tenantDto: TenantDto = {\n id: tenantEntry.entryId,\n values: tenantEntry.values\n };\n\n return Result.ok(Tenant.from(tenantDto));\n } catch (error) {\n return Result.fail(new TenantPersistenceError(error as Error));\n }\n }\n}\n\nexport default RepositoryAbstraction.createImplementation({\n implementation: GetTenantByIdRepository,\n dependencies: [TenantContext, GetModelUseCase, GetEntryByIdUseCase]\n});\n"],"names":["GetTenantByIdRepository","tenantContext","getModelUseCase","getEntryUseCase","id","entryId","EntryId","modelResult","TENANT_MODEL_ID","Result","TenantModelNotFoundError","entryResult","TenantNotFoundError","tenantEntry","tenantDto","Tenant","error","TenantPersistenceError","RepositoryAbstraction","TenantContext","GetModelUseCase","GetEntryByIdUseCase"],"mappings":";;;;;;;;;AAcA,MAAMA;IACF,YACYC,aAAsC,EACtCC,eAA0C,EAC1CC,eAA8C,CACxD;aAHUF,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAwD;QAC5E,IAAI;YACA,MAAMC,UAAUC,QAAQ,IAAI,CAACF;YAG7B,MAAMG,cAAc,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACC;YACvD,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CAAC,IAAIC;YAI3B,MAAMC,cAAc,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAC/BJ,YAAY,KAAK,EACjBF,QAAQ,QAAQ;YAIxB,IAAIM,YAAY,MAAM,IAClB,OAAOF,OAAO,IAAI,CAAC,IAAIG,oBAAoBR;YAG/C,MAAMS,cAAcF,YAAY,KAAK;YAErC,MAAMG,YAAuB;gBACzB,IAAID,YAAY,OAAO;gBACvB,QAAQA,YAAY,MAAM;YAC9B;YAEA,OAAOJ,OAAO,EAAE,CAACM,OAAO,IAAI,CAACD;QACjC,EAAE,OAAOE,OAAO;YACZ,OAAOP,OAAO,IAAI,CAAC,IAAIQ,uBAAuBD;QAClD;IACJ;AACJ;AAEA,8CAAeE,wBAAAA,oBAA0C,CAAC;IACtD,gBAAgBlB;IAChB,cAAc;QAACmB;QAAeC;QAAiBC;KAAoB;AACvE"}
@@ -1,27 +1,23 @@
1
1
  import { Tenant, rootTenantDto } from "../../../shared/Tenant.js";
2
- import { GetTenantByIdUseCase as UseCaseAbstraction, GetTenantByIdRepository } from "./abstractions.js";
2
+ import { GetTenantByIdRepository, GetTenantByIdUseCase } from "./abstractions.js";
3
3
  import { Result } from "@webiny/feature/api";
4
- class GetTenantByIdUseCase {
5
- constructor(repository) {
6
- this.repository = repository;
7
- }
8
- async execute(id) {
9
- // Handle special root tenant case
10
- if (id === "root") {
11
- return Result.ok(Tenant.from(rootTenantDto));
4
+ class GetTenantByIdUseCase_GetTenantByIdUseCase {
5
+ constructor(repository){
6
+ this.repository = repository;
12
7
  }
13
-
14
- // Delegate to repository
15
- const result = await this.repository.execute(id);
16
- if (result.isFail()) {
17
- return Result.fail(result.error);
8
+ async execute(id) {
9
+ if ("root" === id) return Result.ok(Tenant.from(rootTenantDto));
10
+ const result = await this.repository.execute(id);
11
+ if (result.isFail()) return Result.fail(result.error);
12
+ return Result.ok(result.value);
18
13
  }
19
- return Result.ok(result.value);
20
- }
21
14
  }
22
- export default UseCaseAbstraction.createImplementation({
23
- implementation: GetTenantByIdUseCase,
24
- dependencies: [GetTenantByIdRepository]
15
+ const GetTenantById_GetTenantByIdUseCase = GetTenantByIdUseCase.createImplementation({
16
+ implementation: GetTenantByIdUseCase_GetTenantByIdUseCase,
17
+ dependencies: [
18
+ GetTenantByIdRepository
19
+ ]
25
20
  });
21
+ export default GetTenantById_GetTenantByIdUseCase;
26
22
 
27
23
  //# sourceMappingURL=GetTenantByIdUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Tenant","rootTenantDto","GetTenantByIdUseCase","UseCaseAbstraction","GetTenantByIdRepository","Result","constructor","repository","execute","id","ok","from","result","isFail","fail","error","value","createImplementation","implementation","dependencies"],"sources":["GetTenantByIdUseCase.ts"],"sourcesContent":["import { Tenant, rootTenantDto } from \"~/shared/Tenant.js\";\nimport {\n GetTenantByIdUseCase as UseCaseAbstraction,\n GetTenantByIdRepository\n} from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\n\nclass GetTenantByIdUseCase implements UseCaseAbstraction.Interface {\n constructor(private repository: GetTenantByIdRepository.Interface) {}\n\n async execute(id: string): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n // Handle special root tenant case\n if (id === \"root\") {\n return Result.ok(Tenant.from(rootTenantDto));\n }\n\n // Delegate to repository\n const result = await this.repository.execute(id);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: GetTenantByIdUseCase,\n dependencies: [GetTenantByIdRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,aAAa;AAC9B,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,MAAM,QAAQ,qBAAqB;AAE5C,MAAMH,oBAAoB,CAAyC;EAC/DI,WAAWA,CAASC,UAA6C,EAAE;IAAA,KAA/CA,UAA6C,GAA7CA,UAA6C;EAAG;EAEpE,MAAMC,OAAOA,CAACC,EAAU,EAAqD;IACzE;IACA,IAAIA,EAAE,KAAK,MAAM,EAAE;MACf,OAAOJ,MAAM,CAACK,EAAE,CAACV,MAAM,CAACW,IAAI,CAACV,aAAa,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMW,MAAM,GAAG,MAAM,IAAI,CAACL,UAAU,CAACC,OAAO,CAACC,EAAE,CAAC;IAChD,IAAIG,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOR,MAAM,CAACS,IAAI,CAACF,MAAM,CAACG,KAAK,CAAC;IACpC;IAEA,OAAOV,MAAM,CAACK,EAAE,CAACE,MAAM,CAACI,KAAK,CAAC;EAClC;AACJ;AAEA,eAAeb,kBAAkB,CAACc,oBAAoB,CAAC;EACnDC,cAAc,EAAEhB,oBAAoB;EACpCiB,YAAY,EAAE,CAACf,uBAAuB;AAC1C,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetTenantById/GetTenantByIdUseCase.js","sources":["../../../../src/api/features/GetTenantById/GetTenantByIdUseCase.ts"],"sourcesContent":["import { Tenant, rootTenantDto } from \"~/shared/Tenant.js\";\nimport {\n GetTenantByIdUseCase as UseCaseAbstraction,\n GetTenantByIdRepository\n} from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\n\nclass GetTenantByIdUseCase implements UseCaseAbstraction.Interface {\n constructor(private repository: GetTenantByIdRepository.Interface) {}\n\n async execute(id: string): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n // Handle special root tenant case\n if (id === \"root\") {\n return Result.ok(Tenant.from(rootTenantDto));\n }\n\n // Delegate to repository\n const result = await this.repository.execute(id);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: GetTenantByIdUseCase,\n dependencies: [GetTenantByIdRepository]\n});\n"],"names":["GetTenantByIdUseCase","repository","id","Result","Tenant","rootTenantDto","result","UseCaseAbstraction","GetTenantByIdRepository"],"mappings":";;;AAOA,MAAMA;IACF,YAAoBC,UAA6C,CAAE;aAA/CA,UAAU,GAAVA;IAAgD;IAEpE,MAAM,QAAQC,EAAU,EAAqD;QAEzE,IAAIA,AAAO,WAAPA,IACA,OAAOC,OAAO,EAAE,CAACC,OAAO,IAAI,CAACC;QAIjC,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACJ;QAC7C,IAAII,OAAO,MAAM,IACb,OAAOH,OAAO,IAAI,CAACG,OAAO,KAAK;QAGnC,OAAOH,OAAO,EAAE,CAACG,OAAO,KAAK;IACjC;AACJ;AAEA,2CAAeC,qBAAAA,oBAAuC,CAAC;IACnD,gBAAgBP;IAChB,cAAc;QAACQ;KAAwB;AAC3C"}
@@ -1,15 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * GetTenantById Use Case
5
- */
6
-
7
- export const GetTenantByIdUseCase = createAbstraction("TenantManager/GetTenantByIdUseCase");
8
-
9
- /**
10
- * GetTenantByIdRepository - Retrieves a tenant from storage.
11
- */
12
-
13
- export const GetTenantByIdRepository = createAbstraction("TenantManager/GetTenantByIdRepository");
2
+ const GetTenantByIdUseCase = createAbstraction("TenantManager/GetTenantByIdUseCase");
3
+ const GetTenantByIdRepository = createAbstraction("TenantManager/GetTenantByIdRepository");
4
+ export { GetTenantByIdRepository, GetTenantByIdUseCase };
14
5
 
15
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetTenantByIdUseCase","GetTenantByIdRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Tenant } from \"../../../shared/Tenant.js\";\nimport {\n TenantModelNotFoundError,\n type TenantNotFoundError,\n type TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * GetTenantById Use Case\n */\nexport interface IGetTenantByIdUseCase {\n execute(id: string): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IGetTenantByIdUseCaseErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IGetTenantByIdUseCaseErrors[keyof IGetTenantByIdUseCaseErrors];\n\nexport const GetTenantByIdUseCase = createAbstraction<IGetTenantByIdUseCase>(\n \"TenantManager/GetTenantByIdUseCase\"\n);\n\nexport namespace GetTenantByIdUseCase {\n export type Interface = IGetTenantByIdUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * GetTenantByIdRepository - Retrieves a tenant from storage.\n */\nexport interface IGetTenantByIdRepository {\n execute(id: string): Promise<Result<Tenant, RepositoryError>>;\n}\n\nexport interface IGetTenantByIdRepositoryErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype RepositoryError = IGetTenantByIdRepositoryErrors[keyof IGetTenantByIdRepositoryErrors];\n\nexport const GetTenantByIdRepository = createAbstraction<IGetTenantByIdRepository>(\n \"TenantManager/GetTenantByIdRepository\"\n);\n\nexport namespace GetTenantByIdRepository {\n export type Interface = IGetTenantByIdRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AASvD;AACA;AACA;;AAaA,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CACjD,oCACJ,CAAC;;AAOD;AACA;AACA;;AAaA,OAAO,MAAME,uBAAuB,GAAGF,iBAAiB,CACpD,uCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetTenantById/abstractions.js","sources":["../../../../src/api/features/GetTenantById/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Tenant } from \"../../../shared/Tenant.js\";\nimport {\n TenantModelNotFoundError,\n type TenantNotFoundError,\n type TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * GetTenantById Use Case\n */\nexport interface IGetTenantByIdUseCase {\n execute(id: string): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IGetTenantByIdUseCaseErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IGetTenantByIdUseCaseErrors[keyof IGetTenantByIdUseCaseErrors];\n\nexport const GetTenantByIdUseCase = createAbstraction<IGetTenantByIdUseCase>(\n \"TenantManager/GetTenantByIdUseCase\"\n);\n\nexport namespace GetTenantByIdUseCase {\n export type Interface = IGetTenantByIdUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * GetTenantByIdRepository - Retrieves a tenant from storage.\n */\nexport interface IGetTenantByIdRepository {\n execute(id: string): Promise<Result<Tenant, RepositoryError>>;\n}\n\nexport interface IGetTenantByIdRepositoryErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype RepositoryError = IGetTenantByIdRepositoryErrors[keyof IGetTenantByIdRepositoryErrors];\n\nexport const GetTenantByIdRepository = createAbstraction<IGetTenantByIdRepository>(\n \"TenantManager/GetTenantByIdRepository\"\n);\n\nexport namespace GetTenantByIdRepository {\n export type Interface = IGetTenantByIdRepository;\n export type Error = RepositoryError;\n}\n"],"names":["GetTenantByIdUseCase","createAbstraction","GetTenantByIdRepository"],"mappings":";AAwBO,MAAMA,uBAAuBC,kBAChC;AAuBG,MAAMC,0BAA0BD,kBACnC"}
@@ -1,15 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import GetTenantByIdUseCase from "./GetTenantByIdUseCase.js";
3
3
  import GetTenantByIdRepository from "./GetTenantByIdRepository.js";
4
- export const GetTenantByIdFeature = createFeature({
5
- name: "GetTenantById",
6
- register(container) {
7
- // Register use case (transient scope)
8
- container.register(GetTenantByIdUseCase);
9
-
10
- // Register repository (singleton scope)
11
- container.register(GetTenantByIdRepository).inSingletonScope();
12
- }
4
+ const GetTenantByIdFeature = createFeature({
5
+ name: "GetTenantById",
6
+ register (container) {
7
+ container.register(GetTenantByIdUseCase);
8
+ container.register(GetTenantByIdRepository).inSingletonScope();
9
+ }
13
10
  });
11
+ export { GetTenantByIdFeature };
14
12
 
15
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","GetTenantByIdUseCase","GetTenantByIdRepository","GetTenantByIdFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport GetTenantByIdUseCase from \"./GetTenantByIdUseCase.js\";\nimport GetTenantByIdRepository from \"./GetTenantByIdRepository.js\";\n\nexport const GetTenantByIdFeature = createFeature({\n name: \"GetTenantById\",\n register(container) {\n // Register use case (transient scope)\n container.register(GetTenantByIdUseCase);\n\n // Register repository (singleton scope)\n container.register(GetTenantByIdRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,oBAAoB;AAC3B,OAAOC,uBAAuB;AAE9B,OAAO,MAAMC,oBAAoB,GAAGH,aAAa,CAAC;EAC9CI,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACJ,oBAAoB,CAAC;;IAExC;IACAK,SAAS,CAACD,QAAQ,CAACH,uBAAuB,CAAC,CAACK,gBAAgB,CAAC,CAAC;EAClE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetTenantById/feature.js","sources":["../../../../src/api/features/GetTenantById/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport GetTenantByIdUseCase from \"./GetTenantByIdUseCase.js\";\nimport GetTenantByIdRepository from \"./GetTenantByIdRepository.js\";\n\nexport const GetTenantByIdFeature = createFeature({\n name: \"GetTenantById\",\n register(container) {\n // Register use case (transient scope)\n container.register(GetTenantByIdUseCase);\n\n // Register repository (singleton scope)\n container.register(GetTenantByIdRepository).inSingletonScope();\n }\n});\n"],"names":["GetTenantByIdFeature","createFeature","container","GetTenantByIdUseCase","GetTenantByIdRepository"],"mappings":";;;AAIO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;QAGnBD,UAAU,QAAQ,CAACE,yBAAyB,gBAAgB;IAChE;AACJ"}
@@ -1,58 +1,51 @@
1
1
  import { Tenant } from "../../../shared/Tenant.js";
2
2
  import { TENANT_MODEL_ID } from "../../../shared/constants.js";
3
3
  import { TenantNotFoundError, TenantPersistenceError } from "../../domain/errors.js";
4
- import { UpdateTenantRepository as RepositoryAbstraction } from "./abstractions.js";
4
+ import { UpdateTenantRepository } from "./abstractions.js";
5
5
  import { Result } from "@webiny/feature/api";
6
- import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
7
- import { GetEntryUseCase } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
8
- import { UpdateEntryUseCase } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
6
+ import { EntryId, GetEntryUseCase, UpdateEntryUseCase } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
9
7
  import { GetModelUseCase } from "@webiny/api-headless-cms/exports/api/cms/model";
10
- class UpdateTenantRepository {
11
- constructor(getModelUseCase, getEntryUseCase, updateEntryUseCase) {
12
- this.getModelUseCase = getModelUseCase;
13
- this.getEntryUseCase = getEntryUseCase;
14
- this.updateEntryUseCase = updateEntryUseCase;
15
- }
16
- async execute(id, input) {
17
- try {
18
- const entryId = EntryId.from(id);
19
-
20
- // Get the tenant model
21
- const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);
22
- if (modelResult.isFail()) {
23
- return Result.fail(new TenantPersistenceError(new Error(`Model "${TENANT_MODEL_ID}" was not found!`)));
24
- }
25
-
26
- // Get the current tenant entry to verify it exists
27
- const getEntryResult = await this.getEntryUseCase.execute(modelResult.value, {
28
- where: {
29
- entryId: entryId.id,
30
- latest: true
8
+ class UpdateTenantRepository_UpdateTenantRepository {
9
+ constructor(getModelUseCase, getEntryUseCase, updateEntryUseCase){
10
+ this.getModelUseCase = getModelUseCase;
11
+ this.getEntryUseCase = getEntryUseCase;
12
+ this.updateEntryUseCase = updateEntryUseCase;
13
+ }
14
+ async execute(id, input) {
15
+ try {
16
+ const entryId = EntryId.from(id);
17
+ const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);
18
+ if (modelResult.isFail()) return Result.fail(new TenantPersistenceError(new Error(`Model "${TENANT_MODEL_ID}" was not found!`)));
19
+ const getEntryResult = await this.getEntryUseCase.execute(modelResult.value, {
20
+ where: {
21
+ entryId: entryId.id,
22
+ latest: true
23
+ }
24
+ });
25
+ if (getEntryResult.isFail()) return Result.fail(new TenantNotFoundError(id));
26
+ const updateResult = await this.updateEntryUseCase.execute(modelResult.value, entryId.toString(), {
27
+ values: input
28
+ });
29
+ if (updateResult.isFail()) return Result.fail(new TenantPersistenceError(updateResult.error));
30
+ const updatedEntry = updateResult.value;
31
+ const tenantDto = {
32
+ id: updatedEntry.entryId,
33
+ values: updatedEntry.values
34
+ };
35
+ return Result.ok(Tenant.from(tenantDto));
36
+ } catch (error) {
37
+ return Result.fail(new TenantPersistenceError(error));
31
38
  }
32
- });
33
- if (getEntryResult.isFail()) {
34
- return Result.fail(new TenantNotFoundError(id));
35
- }
36
- const updateResult = await this.updateEntryUseCase.execute(modelResult.value, entryId.toString(), {
37
- values: input
38
- });
39
- if (updateResult.isFail()) {
40
- return Result.fail(new TenantPersistenceError(updateResult.error));
41
- }
42
- const updatedEntry = updateResult.value;
43
- const tenantDto = {
44
- id: updatedEntry.entryId,
45
- values: updatedEntry.values
46
- };
47
- return Result.ok(Tenant.from(tenantDto));
48
- } catch (error) {
49
- return Result.fail(new TenantPersistenceError(error));
50
39
  }
51
- }
52
40
  }
53
- export default RepositoryAbstraction.createImplementation({
54
- implementation: UpdateTenantRepository,
55
- dependencies: [GetModelUseCase, GetEntryUseCase, UpdateEntryUseCase]
41
+ const UpdateTenant_UpdateTenantRepository = UpdateTenantRepository.createImplementation({
42
+ implementation: UpdateTenantRepository_UpdateTenantRepository,
43
+ dependencies: [
44
+ GetModelUseCase,
45
+ GetEntryUseCase,
46
+ UpdateEntryUseCase
47
+ ]
56
48
  });
49
+ export default UpdateTenant_UpdateTenantRepository;
57
50
 
58
51
  //# sourceMappingURL=UpdateTenantRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Tenant","TENANT_MODEL_ID","TenantNotFoundError","TenantPersistenceError","UpdateTenantRepository","RepositoryAbstraction","Result","EntryId","GetEntryUseCase","UpdateEntryUseCase","GetModelUseCase","constructor","getModelUseCase","getEntryUseCase","updateEntryUseCase","execute","id","input","entryId","from","modelResult","isFail","fail","Error","getEntryResult","value","where","latest","updateResult","toString","values","error","updatedEntry","tenantDto","ok","createImplementation","implementation","dependencies"],"sources":["UpdateTenantRepository.ts"],"sourcesContent":["import { Tenant, TenantDto, TenantValues } from \"~/shared/Tenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { TenantNotFoundError, TenantPersistenceError } from \"../../domain/errors.js\";\nimport {\n UpdateTenantRepository as RepositoryAbstraction,\n UpdateTenantInput\n} from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { GetEntryUseCase } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model\";\n\nclass UpdateTenantRepository implements RepositoryAbstraction.Interface {\n constructor(\n private getModelUseCase: GetModelUseCase.Interface,\n private getEntryUseCase: GetEntryUseCase.Interface,\n private updateEntryUseCase: UpdateEntryUseCase.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateTenantInput\n ): Promise<Result<Tenant, RepositoryAbstraction.Error>> {\n try {\n const entryId = EntryId.from(id);\n\n // Get the tenant model\n const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Model \"${TENANT_MODEL_ID}\" was not found!`)\n )\n );\n }\n\n // Get the current tenant entry to verify it exists\n const getEntryResult = await this.getEntryUseCase.execute<TenantValues>(\n modelResult.value,\n {\n where: { entryId: entryId.id, latest: true }\n }\n );\n\n if (getEntryResult.isFail()) {\n return Result.fail(new TenantNotFoundError(id));\n }\n\n const updateResult = await this.updateEntryUseCase.execute(\n modelResult.value,\n entryId.toString(),\n {\n values: input\n }\n );\n\n if (updateResult.isFail()) {\n return Result.fail(new TenantPersistenceError(updateResult.error));\n }\n\n const updatedEntry = updateResult.value;\n\n const tenantDto: TenantDto = {\n id: updatedEntry.entryId,\n values: updatedEntry.values as TenantValues\n };\n\n return Result.ok(Tenant.from(tenantDto));\n } catch (error) {\n return Result.fail(new TenantPersistenceError(error));\n }\n }\n}\n\nexport default RepositoryAbstraction.createImplementation({\n implementation: UpdateTenantRepository,\n dependencies: [GetModelUseCase, GetEntryUseCase, UpdateEntryUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM;AACf,SAASC,eAAe;AACxB,SAASC,mBAAmB,EAAEC,sBAAsB;AACpD,SACIC,sBAAsB,IAAIC,qBAAqB;AAGnD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,OAAO,QAAQ,mDAAmD;AAC3E,SAASC,eAAe,QAAQ,mDAAmD;AACnF,SAASC,kBAAkB,QAAQ,mDAAmD;AACtF,SAASC,eAAe,QAAQ,gDAAgD;AAEhF,MAAMN,sBAAsB,CAA4C;EACpEO,WAAWA,CACCC,eAA0C,EAC1CC,eAA0C,EAC1CC,kBAAgD,EAC1D;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,kBAAgD,GAAhDA,kBAAgD;EACzD;EAEH,MAAMC,OAAOA,CACTC,EAAU,EACVC,KAAwB,EAC4B;IACpD,IAAI;MACA,MAAMC,OAAO,GAAGX,OAAO,CAACY,IAAI,CAACH,EAAE,CAAC;;MAEhC;MACA,MAAMI,WAAW,GAAG,MAAM,IAAI,CAACR,eAAe,CAACG,OAAO,CAACd,eAAe,CAAC;MACvE,IAAImB,WAAW,CAACC,MAAM,CAAC,CAAC,EAAE;QACtB,OAAOf,MAAM,CAACgB,IAAI,CACd,IAAInB,sBAAsB,CACtB,IAAIoB,KAAK,CAAC,UAAUtB,eAAe,kBAAkB,CACzD,CACJ,CAAC;MACL;;MAEA;MACA,MAAMuB,cAAc,GAAG,MAAM,IAAI,CAACX,eAAe,CAACE,OAAO,CACrDK,WAAW,CAACK,KAAK,EACjB;QACIC,KAAK,EAAE;UAAER,OAAO,EAAEA,OAAO,CAACF,EAAE;UAAEW,MAAM,EAAE;QAAK;MAC/C,CACJ,CAAC;MAED,IAAIH,cAAc,CAACH,MAAM,CAAC,CAAC,EAAE;QACzB,OAAOf,MAAM,CAACgB,IAAI,CAAC,IAAIpB,mBAAmB,CAACc,EAAE,CAAC,CAAC;MACnD;MAEA,MAAMY,YAAY,GAAG,MAAM,IAAI,CAACd,kBAAkB,CAACC,OAAO,CACtDK,WAAW,CAACK,KAAK,EACjBP,OAAO,CAACW,QAAQ,CAAC,CAAC,EAClB;QACIC,MAAM,EAAEb;MACZ,CACJ,CAAC;MAED,IAAIW,YAAY,CAACP,MAAM,CAAC,CAAC,EAAE;QACvB,OAAOf,MAAM,CAACgB,IAAI,CAAC,IAAInB,sBAAsB,CAACyB,YAAY,CAACG,KAAK,CAAC,CAAC;MACtE;MAEA,MAAMC,YAAY,GAAGJ,YAAY,CAACH,KAAK;MAEvC,MAAMQ,SAAoB,GAAG;QACzBjB,EAAE,EAAEgB,YAAY,CAACd,OAAO;QACxBY,MAAM,EAAEE,YAAY,CAACF;MACzB,CAAC;MAED,OAAOxB,MAAM,CAAC4B,EAAE,CAAClC,MAAM,CAACmB,IAAI,CAACc,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,OAAOF,KAAK,EAAE;MACZ,OAAOzB,MAAM,CAACgB,IAAI,CAAC,IAAInB,sBAAsB,CAAC4B,KAAK,CAAC,CAAC;IACzD;EACJ;AACJ;AAEA,eAAe1B,qBAAqB,CAAC8B,oBAAoB,CAAC;EACtDC,cAAc,EAAEhC,sBAAsB;EACtCiC,YAAY,EAAE,CAAC3B,eAAe,EAAEF,eAAe,EAAEC,kBAAkB;AACvE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/UpdateTenant/UpdateTenantRepository.js","sources":["../../../../src/api/features/UpdateTenant/UpdateTenantRepository.ts"],"sourcesContent":["import { Tenant, TenantDto, TenantValues } from \"~/shared/Tenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { TenantNotFoundError, TenantPersistenceError } from \"../../domain/errors.js\";\nimport {\n UpdateTenantRepository as RepositoryAbstraction,\n UpdateTenantInput\n} from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { GetEntryUseCase } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model\";\n\nclass UpdateTenantRepository implements RepositoryAbstraction.Interface {\n constructor(\n private getModelUseCase: GetModelUseCase.Interface,\n private getEntryUseCase: GetEntryUseCase.Interface,\n private updateEntryUseCase: UpdateEntryUseCase.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateTenantInput\n ): Promise<Result<Tenant, RepositoryAbstraction.Error>> {\n try {\n const entryId = EntryId.from(id);\n\n // Get the tenant model\n const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Model \"${TENANT_MODEL_ID}\" was not found!`)\n )\n );\n }\n\n // Get the current tenant entry to verify it exists\n const getEntryResult = await this.getEntryUseCase.execute<TenantValues>(\n modelResult.value,\n {\n where: { entryId: entryId.id, latest: true }\n }\n );\n\n if (getEntryResult.isFail()) {\n return Result.fail(new TenantNotFoundError(id));\n }\n\n const updateResult = await this.updateEntryUseCase.execute(\n modelResult.value,\n entryId.toString(),\n {\n values: input\n }\n );\n\n if (updateResult.isFail()) {\n return Result.fail(new TenantPersistenceError(updateResult.error));\n }\n\n const updatedEntry = updateResult.value;\n\n const tenantDto: TenantDto = {\n id: updatedEntry.entryId,\n values: updatedEntry.values as TenantValues\n };\n\n return Result.ok(Tenant.from(tenantDto));\n } catch (error) {\n return Result.fail(new TenantPersistenceError(error));\n }\n }\n}\n\nexport default RepositoryAbstraction.createImplementation({\n implementation: UpdateTenantRepository,\n dependencies: [GetModelUseCase, GetEntryUseCase, UpdateEntryUseCase]\n});\n"],"names":["UpdateTenantRepository","getModelUseCase","getEntryUseCase","updateEntryUseCase","id","input","entryId","EntryId","modelResult","TENANT_MODEL_ID","Result","TenantPersistenceError","Error","getEntryResult","TenantNotFoundError","updateResult","updatedEntry","tenantDto","Tenant","error","RepositoryAbstraction","GetModelUseCase","GetEntryUseCase","UpdateEntryUseCase"],"mappings":";;;;;;;AAaA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,eAA0C,EAC1CC,kBAAgD,CAC1D;aAHUF,eAAe,GAAfA;aACAC,eAAe,GAAfA;aACAC,kBAAkB,GAAlBA;IACT;IAEH,MAAM,QACFC,EAAU,EACVC,KAAwB,EAC4B;QACpD,IAAI;YACA,MAAMC,UAAUC,QAAQ,IAAI,CAACH;YAG7B,MAAMI,cAAc,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACC;YACvD,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CACd,IAAIC,uBACA,IAAIC,MAAM,CAAC,OAAO,EAAEH,gBAAgB,gBAAgB,CAAC;YAMjE,MAAMI,iBAAiB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CACrDL,YAAY,KAAK,EACjB;gBACI,OAAO;oBAAE,SAASF,QAAQ,EAAE;oBAAE,QAAQ;gBAAK;YAC/C;YAGJ,IAAIO,eAAe,MAAM,IACrB,OAAOH,OAAO,IAAI,CAAC,IAAII,oBAAoBV;YAG/C,MAAMW,eAAe,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CACtDP,YAAY,KAAK,EACjBF,QAAQ,QAAQ,IAChB;gBACI,QAAQD;YACZ;YAGJ,IAAIU,aAAa,MAAM,IACnB,OAAOL,OAAO,IAAI,CAAC,IAAIC,uBAAuBI,aAAa,KAAK;YAGpE,MAAMC,eAAeD,aAAa,KAAK;YAEvC,MAAME,YAAuB;gBACzB,IAAID,aAAa,OAAO;gBACxB,QAAQA,aAAa,MAAM;YAC/B;YAEA,OAAON,OAAO,EAAE,CAACQ,OAAO,IAAI,CAACD;QACjC,EAAE,OAAOE,OAAO;YACZ,OAAOT,OAAO,IAAI,CAAC,IAAIC,uBAAuBQ;QAClD;IACJ;AACJ;AAEA,4CAAeC,uBAAAA,oBAA0C,CAAC;IACtD,gBAAgBpB;IAChB,cAAc;QAACqB;QAAiBC;QAAiBC;KAAmB;AACxE"}
@@ -1,21 +1,21 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { UpdateTenantUseCase as UseCaseAbstraction, UpdateTenantRepository } from "./abstractions.js";
3
- class UpdateTenantUseCase {
4
- constructor(repository) {
5
- this.repository = repository;
6
- }
7
- async execute(id, input) {
8
- // Delegate to repository
9
- const result = await this.repository.execute(id, input);
10
- if (result.isFail()) {
11
- return Result.fail(result.error);
2
+ import { UpdateTenantRepository, UpdateTenantUseCase } from "./abstractions.js";
3
+ class UpdateTenantUseCase_UpdateTenantUseCase {
4
+ constructor(repository){
5
+ this.repository = repository;
6
+ }
7
+ async execute(id, input) {
8
+ const result = await this.repository.execute(id, input);
9
+ if (result.isFail()) return Result.fail(result.error);
10
+ return Result.ok(result.value);
12
11
  }
13
- return Result.ok(result.value);
14
- }
15
12
  }
16
- export default UseCaseAbstraction.createImplementation({
17
- implementation: UpdateTenantUseCase,
18
- dependencies: [UpdateTenantRepository]
13
+ const UpdateTenant_UpdateTenantUseCase = UpdateTenantUseCase.createImplementation({
14
+ implementation: UpdateTenantUseCase_UpdateTenantUseCase,
15
+ dependencies: [
16
+ UpdateTenantRepository
17
+ ]
19
18
  });
19
+ export default UpdateTenant_UpdateTenantUseCase;
20
20
 
21
21
  //# sourceMappingURL=UpdateTenantUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","UpdateTenantUseCase","UseCaseAbstraction","UpdateTenantRepository","constructor","repository","execute","id","input","result","isFail","fail","error","ok","value","createImplementation","implementation","dependencies"],"sources":["UpdateTenantUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { Tenant } from \"~/shared/Tenant.js\";\nimport {\n UpdateTenantUseCase as UseCaseAbstraction,\n UpdateTenantRepository,\n UpdateTenantInput\n} from \"./abstractions.js\";\n\nclass UpdateTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateTenantRepository.Interface) {}\n\n async execute(\n id: string,\n input: UpdateTenantInput\n ): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n // Delegate to repository\n const result = await this.repository.execute(id, input);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: UpdateTenantUseCase,\n dependencies: [UpdateTenantRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAE5C,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAI1B,MAAMF,mBAAmB,CAAyC;EAC9DG,WAAWA,CAASC,UAA4C,EAAE;IAAA,KAA9CA,UAA4C,GAA5CA,UAA4C;EAAG;EAEnE,MAAMC,OAAOA,CACTC,EAAU,EACVC,KAAwB,EACyB;IACjD;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,UAAU,CAACC,OAAO,CAACC,EAAE,EAAEC,KAAK,CAAC;IACvD,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOV,MAAM,CAACW,IAAI,CAACF,MAAM,CAACG,KAAK,CAAC;IACpC;IAEA,OAAOZ,MAAM,CAACa,EAAE,CAACJ,MAAM,CAACK,KAAK,CAAC;EAClC;AACJ;AAEA,eAAeZ,kBAAkB,CAACa,oBAAoB,CAAC;EACnDC,cAAc,EAAEf,mBAAmB;EACnCgB,YAAY,EAAE,CAACd,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/UpdateTenant/UpdateTenantUseCase.js","sources":["../../../../src/api/features/UpdateTenant/UpdateTenantUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { Tenant } from \"~/shared/Tenant.js\";\nimport {\n UpdateTenantUseCase as UseCaseAbstraction,\n UpdateTenantRepository,\n UpdateTenantInput\n} from \"./abstractions.js\";\n\nclass UpdateTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateTenantRepository.Interface) {}\n\n async execute(\n id: string,\n input: UpdateTenantInput\n ): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n // Delegate to repository\n const result = await this.repository.execute(id, input);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: UpdateTenantUseCase,\n dependencies: [UpdateTenantRepository]\n});\n"],"names":["UpdateTenantUseCase","repository","id","input","result","Result","UseCaseAbstraction","UpdateTenantRepository"],"mappings":";;AAQA,MAAMA;IACF,YAAoBC,UAA4C,CAAE;aAA9CA,UAAU,GAAVA;IAA+C;IAEnE,MAAM,QACFC,EAAU,EACVC,KAAwB,EACyB;QAEjD,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACF,IAAIC;QACjD,IAAIC,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAACD,OAAO,KAAK;QAGnC,OAAOC,OAAO,EAAE,CAACD,OAAO,KAAK;IACjC;AACJ;AAEA,yCAAeE,oBAAAA,oBAAuC,CAAC;IACnD,gBAAgBN;IAChB,cAAc;QAACO;KAAuB;AAC1C"}
@@ -1,15 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * UpdateTenant Use Case
5
- */
6
-
7
- export const UpdateTenantUseCase = createAbstraction("TenantManager/UpdateTenantUseCase");
8
-
9
- /**
10
- * UpdateTenantRepository - Updates a tenant in storage.
11
- */
12
-
13
- export const UpdateTenantRepository = createAbstraction("TenantManager/UpdateTenantRepository");
2
+ const UpdateTenantUseCase = createAbstraction("TenantManager/UpdateTenantUseCase");
3
+ const UpdateTenantRepository = createAbstraction("TenantManager/UpdateTenantRepository");
4
+ export { UpdateTenantRepository, UpdateTenantUseCase };
14
5
 
15
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateTenantUseCase","UpdateTenantRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Tenant, TenantValues } from \"~/shared/Tenant.js\";\nimport {\n TenantModelNotFoundError,\n type TenantNotFoundError,\n type TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * UpdateTenant Use Case\n */\nexport interface UpdateTenantInput extends Partial<TenantValues> {}\n\nexport interface IUpdateTenantUseCase {\n execute(id: string, input: UpdateTenantInput): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IUpdateTenantUseCaseErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IUpdateTenantUseCaseErrors[keyof IUpdateTenantUseCaseErrors];\n\nexport const UpdateTenantUseCase = createAbstraction<IUpdateTenantUseCase>(\n \"TenantManager/UpdateTenantUseCase\"\n);\n\nexport namespace UpdateTenantUseCase {\n export type Interface = IUpdateTenantUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * UpdateTenantRepository - Updates a tenant in storage.\n */\nexport interface IUpdateTenantRepository {\n execute(id: string, input: UpdateTenantInput): Promise<Result<Tenant, RepositoryError>>;\n}\n\nexport interface IUpdateTenantRepositoryErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n}\n\ntype RepositoryError = IUpdateTenantRepositoryErrors[keyof IUpdateTenantRepositoryErrors];\n\nexport const UpdateTenantRepository = createAbstraction<IUpdateTenantRepository>(\n \"TenantManager/UpdateTenantRepository\"\n);\n\nexport namespace UpdateTenantRepository {\n export type Interface = IUpdateTenantRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AASvD;AACA;AACA;;AAeA,OAAO,MAAMC,mBAAmB,GAAGD,iBAAiB,CAChD,mCACJ,CAAC;;AAOD;AACA;AACA;;AAYA,OAAO,MAAME,sBAAsB,GAAGF,iBAAiB,CACnD,sCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/UpdateTenant/abstractions.js","sources":["../../../../src/api/features/UpdateTenant/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Tenant, TenantValues } from \"~/shared/Tenant.js\";\nimport {\n TenantModelNotFoundError,\n type TenantNotFoundError,\n type TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * UpdateTenant Use Case\n */\nexport interface UpdateTenantInput extends Partial<TenantValues> {}\n\nexport interface IUpdateTenantUseCase {\n execute(id: string, input: UpdateTenantInput): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IUpdateTenantUseCaseErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IUpdateTenantUseCaseErrors[keyof IUpdateTenantUseCaseErrors];\n\nexport const UpdateTenantUseCase = createAbstraction<IUpdateTenantUseCase>(\n \"TenantManager/UpdateTenantUseCase\"\n);\n\nexport namespace UpdateTenantUseCase {\n export type Interface = IUpdateTenantUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * UpdateTenantRepository - Updates a tenant in storage.\n */\nexport interface IUpdateTenantRepository {\n execute(id: string, input: UpdateTenantInput): Promise<Result<Tenant, RepositoryError>>;\n}\n\nexport interface IUpdateTenantRepositoryErrors {\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n}\n\ntype RepositoryError = IUpdateTenantRepositoryErrors[keyof IUpdateTenantRepositoryErrors];\n\nexport const UpdateTenantRepository = createAbstraction<IUpdateTenantRepository>(\n \"TenantManager/UpdateTenantRepository\"\n);\n\nexport namespace UpdateTenantRepository {\n export type Interface = IUpdateTenantRepository;\n export type Error = RepositoryError;\n}\n"],"names":["UpdateTenantUseCase","createAbstraction","UpdateTenantRepository"],"mappings":";AA0BO,MAAMA,sBAAsBC,kBAC/B;AAsBG,MAAMC,yBAAyBD,kBAClC"}
@@ -1,15 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import UpdateTenantUseCase from "./UpdateTenantUseCase.js";
3
3
  import UpdateTenantRepository from "./UpdateTenantRepository.js";
4
- export const UpdateTenantFeature = createFeature({
5
- name: "UpdateTenant",
6
- register(container) {
7
- // Register use case (transient scope)
8
- container.register(UpdateTenantUseCase);
9
-
10
- // Register repository (singleton scope)
11
- container.register(UpdateTenantRepository).inSingletonScope();
12
- }
4
+ const UpdateTenantFeature = createFeature({
5
+ name: "UpdateTenant",
6
+ register (container) {
7
+ container.register(UpdateTenantUseCase);
8
+ container.register(UpdateTenantRepository).inSingletonScope();
9
+ }
13
10
  });
11
+ export { UpdateTenantFeature };
14
12
 
15
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","UpdateTenantUseCase","UpdateTenantRepository","UpdateTenantFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport UpdateTenantUseCase from \"./UpdateTenantUseCase.js\";\nimport UpdateTenantRepository from \"./UpdateTenantRepository.js\";\n\nexport const UpdateTenantFeature = createFeature({\n name: \"UpdateTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(UpdateTenantUseCase);\n\n // Register repository (singleton scope)\n container.register(UpdateTenantRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,mBAAmB;AAC1B,OAAOC,sBAAsB;AAE7B,OAAO,MAAMC,mBAAmB,GAAGH,aAAa,CAAC;EAC7CI,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACJ,mBAAmB,CAAC;;IAEvC;IACAK,SAAS,CAACD,QAAQ,CAACH,sBAAsB,CAAC,CAACK,gBAAgB,CAAC,CAAC;EACjE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/UpdateTenant/feature.js","sources":["../../../../src/api/features/UpdateTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport UpdateTenantUseCase from \"./UpdateTenantUseCase.js\";\nimport UpdateTenantRepository from \"./UpdateTenantRepository.js\";\n\nexport const UpdateTenantFeature = createFeature({\n name: \"UpdateTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(UpdateTenantUseCase);\n\n // Register repository (singleton scope)\n container.register(UpdateTenantRepository).inSingletonScope();\n }\n});\n"],"names":["UpdateTenantFeature","createFeature","container","UpdateTenantUseCase","UpdateTenantRepository"],"mappings":";;;AAIO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;QAGnBD,UAAU,QAAQ,CAACE,wBAAwB,gBAAgB;IAC/D;AACJ"}
@@ -1,6 +1,5 @@
1
1
  import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
- import { Response } from "@webiny/handler-graphql";
3
- import { ErrorResponse } from "@webiny/handler-graphql";
2
+ import { ErrorResponse, Response } from "@webiny/handler-graphql";
4
3
  import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
5
4
  import { CreateTenantUseCase } from "../features/CreateTenant/abstractions.js";
6
5
  import { ListModelsUseCase } from "@webiny/api-headless-cms/exports/api/cms/model.js";
@@ -8,72 +7,71 @@ import { TENANT_MODEL_ID } from "../../shared/constants.js";
8
7
  import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
9
8
  import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
10
9
  class CreateTenantSchema {
11
- constructor(identityContext, listModelsUseCase, fieldRegistry) {
12
- this.identityContext = identityContext;
13
- this.listModelsUseCase = listModelsUseCase;
14
- this.fieldRegistry = fieldRegistry;
15
- }
16
- async execute(builder) {
17
- const inputCreateFields = await this.getExtensionsInput();
18
- builder.addTypeDefs(/* GraphQL */`
19
- ${inputCreateFields.map(f => f.typeDefs).join("\n")}
10
+ constructor(identityContext, listModelsUseCase, fieldRegistry){
11
+ this.identityContext = identityContext;
12
+ this.listModelsUseCase = listModelsUseCase;
13
+ this.fieldRegistry = fieldRegistry;
14
+ }
15
+ async execute(builder) {
16
+ const inputCreateFields = await this.getExtensionsInput();
17
+ builder.addTypeDefs(`
18
+ ${inputCreateFields.map((f)=>f.typeDefs).join("\n")}
20
19
 
21
20
  input CreateTenantInput {
22
21
  id: ID
23
22
  name: String!
24
23
  description: String
25
- ${inputCreateFields.map(f => f.fields).join("\n")}
24
+ ${inputCreateFields.map((f)=>f.fields).join("\n")}
26
25
  }
27
26
  `);
28
- builder.addTypeDefs(/* GraphQL */`
27
+ builder.addTypeDefs(`
29
28
  extend type TenantManagerMutation {
30
29
  createTenant(input: CreateTenantInput!): BooleanResponse
31
30
  }
32
31
  `);
33
- builder.addResolver({
34
- path: "TenantManagerMutation.createTenant",
35
- dependencies: [CreateTenantUseCase],
36
- resolver: createTenant => {
37
- return async ({
38
- args
39
- }) => {
40
- const result = await createTenant.execute(args.input);
41
- if (result.isFail()) {
42
- return new ErrorResponse(result.error);
43
- }
44
- return new Response(true);
45
- };
46
- }
47
- });
48
- return builder;
49
- }
50
- async getExtensionsInput() {
51
- const modelsResult = await this.identityContext.withoutAuthorization(() => {
52
- return this.listModelsUseCase.execute({
53
- includePlugins: true,
54
- includePrivate: false
55
- });
56
- });
57
- if (modelsResult.isFail()) {
58
- return [{
59
- typeDefs: "",
60
- fields: "extensions: JSON"
61
- }];
32
+ builder.addResolver({
33
+ path: "TenantManagerMutation.createTenant",
34
+ dependencies: [
35
+ CreateTenantUseCase
36
+ ],
37
+ resolver: (createTenant)=>async ({ args })=>{
38
+ const result = await createTenant.execute(args.input);
39
+ if (result.isFail()) return new ErrorResponse(result.error);
40
+ return new Response(true);
41
+ }
42
+ });
43
+ return builder;
44
+ }
45
+ async getExtensionsInput() {
46
+ const modelsResult = await this.identityContext.withoutAuthorization(()=>this.listModelsUseCase.execute({
47
+ includePlugins: true,
48
+ includePrivate: false
49
+ }));
50
+ if (modelsResult.isFail()) return [
51
+ {
52
+ typeDefs: "",
53
+ fields: "extensions: JSON"
54
+ }
55
+ ];
56
+ const models = modelsResult.value;
57
+ const model = models.find((m)=>m.modelId === TENANT_MODEL_ID);
58
+ const inputCreateFields = renderInputFields({
59
+ models,
60
+ model,
61
+ fields: model.fields.filter((f)=>"extensions" === f.fieldId),
62
+ fieldRegistry: this.fieldRegistry
63
+ });
64
+ return inputCreateFields;
62
65
  }
63
- const models = modelsResult.value;
64
- const model = models.find(m => m.modelId === TENANT_MODEL_ID);
65
- const inputCreateFields = renderInputFields({
66
- models,
67
- model,
68
- fields: model.fields.filter(f => f.fieldId === "extensions"),
69
- fieldRegistry: this.fieldRegistry
70
- });
71
- return inputCreateFields;
72
- }
73
66
  }
74
- export default GraphQLSchemaFactory.createImplementation({
75
- implementation: CreateTenantSchema,
76
- dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]
67
+ const graphql_CreateTenantSchema = GraphQLSchemaFactory.createImplementation({
68
+ implementation: CreateTenantSchema,
69
+ dependencies: [
70
+ IdentityContext,
71
+ ListModelsUseCase,
72
+ CmsModelFieldToGraphQLRegistry
73
+ ]
77
74
  });
75
+ export default graphql_CreateTenantSchema;
78
76
 
79
77
  //# sourceMappingURL=CreateTenantSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GraphQLSchemaFactory","Response","ErrorResponse","renderInputFields","CreateTenantUseCase","ListModelsUseCase","TENANT_MODEL_ID","CmsModelFieldToGraphQLRegistry","IdentityContext","CreateTenantSchema","constructor","identityContext","listModelsUseCase","fieldRegistry","execute","builder","inputCreateFields","getExtensionsInput","addTypeDefs","map","f","typeDefs","join","fields","addResolver","path","dependencies","resolver","createTenant","args","result","input","isFail","error","modelsResult","withoutAuthorization","includePlugins","includePrivate","models","value","model","find","m","modelId","filter","fieldId","createImplementation","implementation"],"sources":["CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { CreateTenantUseCase } from \"../features/CreateTenant/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nclass CreateTenantSchema implements GraphQLSchemaFactory.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n const inputCreateFields = await this.getExtensionsInput();\n\n builder.addTypeDefs(/* GraphQL */ `\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input CreateTenantInput {\n id: ID\n name: String!\n description: String\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n `);\n\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n createTenant(input: CreateTenantInput!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ input: CreateTenantUseCase.Input }>({\n path: \"TenantManagerMutation.createTenant\",\n dependencies: [CreateTenantUseCase],\n resolver: (createTenant: CreateTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createTenant.execute(args.input);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n\n private async getExtensionsInput() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute({\n includePlugins: true,\n includePrivate: false\n });\n });\n\n if (modelsResult.isFail()) {\n return [\n {\n typeDefs: \"\",\n fields: \"extensions: JSON\"\n }\n ];\n }\n\n const models = modelsResult.value;\n const model = models.find(m => m.modelId === TENANT_MODEL_ID)!;\n\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields: model.fields.filter(f => f.fieldId === \"extensions\"),\n fieldRegistry: this.fieldRegistry\n });\n\n return inputCreateFields;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: CreateTenantSchema,\n dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,iDAAiD;AACtF,SAASC,QAAQ,QAAQ,yBAAyB;AAClD,SAASC,aAAa,QAAQ,yBAAyB;AACvD,SAASC,iBAAiB,QAAQ,qDAAqD;AACvF,SAASC,mBAAmB;AAC5B,SAASC,iBAAiB,QAAQ,mDAAmD;AACrF,SAASC,eAAe;AACxB,SAASC,8BAA8B,QAAQ,qDAAqD;AACpG,SAASC,eAAe,QAAQ,0CAA0C;AAE1E,MAAMC,kBAAkB,CAA2C;EAC/DC,WAAWA,CACCC,eAA0C,EAC1CC,iBAA8C,EACrCC,aAAuD,EAC1E;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,iBAA8C,GAA9CA,iBAA8C;IAAA,KACrCC,aAAuD,GAAvDA,aAAuD;EACzE;EAEH,MAAMC,OAAOA,CACTC,OAA2C,EACA;IAC3C,MAAMC,iBAAiB,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAEzDF,OAAO,CAACG,WAAW,CAAC,aAAc;AAC1C,cAAcF,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA,kBAAkBN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACG,MAAM,CAAC,CAACD,IAAI,CAAC,IAAI,CAAC;AACjE;AACA,SAAS,CAAC;IAEFP,OAAO,CAACG,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA,SAAS,CAAC;IAEFH,OAAO,CAACS,WAAW,CAAuC;MACtDC,IAAI,EAAE,oCAAoC;MAC1CC,YAAY,EAAE,CAACtB,mBAAmB,CAAC;MACnCuB,QAAQ,EAAGC,YAA2C,IAAK;QACvD,OAAO,OAAO;UAAEC;QAAK,CAAC,KAAK;UACvB,MAAMC,MAAM,GAAG,MAAMF,YAAY,CAACd,OAAO,CAACe,IAAI,CAACE,KAAK,CAAC;UAErD,IAAID,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;YACjB,OAAO,IAAI9B,aAAa,CAAC4B,MAAM,CAACG,KAAK,CAAC;UAC1C;UAEA,OAAO,IAAIhC,QAAQ,CAAC,IAAI,CAAC;QAC7B,CAAC;MACL;IACJ,CAAC,CAAC;IAEF,OAAOc,OAAO;EAClB;EAEA,MAAcE,kBAAkBA,CAAA,EAAG;IAC/B,MAAMiB,YAAY,GAAG,MAAM,IAAI,CAACvB,eAAe,CAACwB,oBAAoB,CAAC,MAAM;MACvE,OAAO,IAAI,CAACvB,iBAAiB,CAACE,OAAO,CAAC;QAClCsB,cAAc,EAAE,IAAI;QACpBC,cAAc,EAAE;MACpB,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIH,YAAY,CAACF,MAAM,CAAC,CAAC,EAAE;MACvB,OAAO,CACH;QACIX,QAAQ,EAAE,EAAE;QACZE,MAAM,EAAE;MACZ,CAAC,CACJ;IACL;IAEA,MAAMe,MAAM,GAAGJ,YAAY,CAACK,KAAK;IACjC,MAAMC,KAAK,GAAGF,MAAM,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAKrC,eAAe,CAAE;IAE9D,MAAMU,iBAAiB,GAAGb,iBAAiB,CAAC;MACxCmC,MAAM;MACNE,KAAK;MACLjB,MAAM,EAAEiB,KAAK,CAACjB,MAAM,CAACqB,MAAM,CAACxB,CAAC,IAAIA,CAAC,CAACyB,OAAO,KAAK,YAAY,CAAC;MAC5DhC,aAAa,EAAE,IAAI,CAACA;IACxB,CAAC,CAAC;IAEF,OAAOG,iBAAiB;EAC5B;AACJ;AAEA,eAAehB,oBAAoB,CAAC8C,oBAAoB,CAAC;EACrDC,cAAc,EAAEtC,kBAAkB;EAClCiB,YAAY,EAAE,CAAClB,eAAe,EAAEH,iBAAiB,EAAEE,8BAA8B;AACrF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/graphql/CreateTenantSchema.js","sources":["../../../src/api/graphql/CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { CreateTenantUseCase } from \"../features/CreateTenant/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nclass CreateTenantSchema implements GraphQLSchemaFactory.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n const inputCreateFields = await this.getExtensionsInput();\n\n builder.addTypeDefs(/* GraphQL */ `\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input CreateTenantInput {\n id: ID\n name: String!\n description: String\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n `);\n\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n createTenant(input: CreateTenantInput!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ input: CreateTenantUseCase.Input }>({\n path: \"TenantManagerMutation.createTenant\",\n dependencies: [CreateTenantUseCase],\n resolver: (createTenant: CreateTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createTenant.execute(args.input);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n\n private async getExtensionsInput() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute({\n includePlugins: true,\n includePrivate: false\n });\n });\n\n if (modelsResult.isFail()) {\n return [\n {\n typeDefs: \"\",\n fields: \"extensions: JSON\"\n }\n ];\n }\n\n const models = modelsResult.value;\n const model = models.find(m => m.modelId === TENANT_MODEL_ID)!;\n\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields: model.fields.filter(f => f.fieldId === \"extensions\"),\n fieldRegistry: this.fieldRegistry\n });\n\n return inputCreateFields;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: CreateTenantSchema,\n dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]\n});\n"],"names":["CreateTenantSchema","identityContext","listModelsUseCase","fieldRegistry","builder","inputCreateFields","f","CreateTenantUseCase","createTenant","args","result","ErrorResponse","Response","modelsResult","models","model","m","TENANT_MODEL_ID","renderInputFields","GraphQLSchemaFactory","IdentityContext","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":";;;;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,iBAA8C,EACrCC,aAAuD,CAC1E;aAHUF,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;aACSC,aAAa,GAAbA;IAClB;IAEH,MAAM,QACFC,OAA2C,EACA;QAC3C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,kBAAkB;QAEvDD,QAAQ,WAAW,CAAe,CAAC;YAC/B,EAAEC,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;gBAMhD,EAAED,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;QAE1D,CAAC;QAEDF,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuC;YACtD,MAAM;YACN,cAAc;gBAACG;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,KAAK;oBAEpD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOR;IACX;IAEA,MAAc,qBAAqB;QAC/B,MAAMS,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAClC,gBAAgB;gBAChB,gBAAgB;YACpB;QAGJ,IAAIA,aAAa,MAAM,IACnB,OAAO;YACH;gBACI,UAAU;gBACV,QAAQ;YACZ;SACH;QAGL,MAAMC,SAASD,aAAa,KAAK;QACjC,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKC;QAE7C,MAAMZ,oBAAoBa,kBAAkB;YACxCJ;YACAC;YACA,QAAQA,MAAM,MAAM,CAAC,MAAM,CAACT,CAAAA,IAAKA,AAAc,iBAAdA,EAAE,OAAO;YAC1C,eAAe,IAAI,CAAC,aAAa;QACrC;QAEA,OAAOD;IACX;AACJ;AAEA,mCAAec,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBnB;IAChB,cAAc;QAACoB;QAAiBC;QAAmBC;KAA+B;AACtF"}