@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.
- package/TenantManager.js +8 -9
- package/TenantManager.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenant.js +15 -24
- package/admin/CurrentTenant/CurrentTenant.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantGateway.js +18 -19
- package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantPresenter.js +26 -23
- package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantRepository.js +30 -29
- package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -1
- package/admin/CurrentTenant/abstractions.js +4 -12
- package/admin/CurrentTenant/abstractions.js.map +1 -1
- package/admin/CurrentTenant/feature.js +15 -14
- package/admin/CurrentTenant/feature.js.map +1 -1
- package/admin/CurrentTenant/useCurrentTenant.js +11 -16
- package/admin/CurrentTenant/useCurrentTenant.js.map +1 -1
- package/admin/CurrentTenantProvider.js +5 -8
- package/admin/CurrentTenantProvider.js.map +1 -1
- package/admin/DisableTenant/DisableTenantGateway.js +21 -22
- package/admin/DisableTenant/DisableTenantGateway.js.map +1 -1
- package/admin/DisableTenant/DisableTenantRepository.js +13 -10
- package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
- package/admin/DisableTenant/DisableTenantUseCase.js +13 -10
- package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -1
- package/admin/DisableTenant/abstractions.js +4 -12
- package/admin/DisableTenant/abstractions.js.map +1 -1
- package/admin/DisableTenant/feature.js +15 -14
- package/admin/DisableTenant/feature.js.map +1 -1
- package/admin/DisableTenant/index.js +0 -2
- package/admin/DisableTenant/useDisableTenant.js +20 -20
- package/admin/DisableTenant/useDisableTenant.js.map +1 -1
- package/admin/EnableTenant/EnableTenantGateway.js +21 -22
- package/admin/EnableTenant/EnableTenantGateway.js.map +1 -1
- package/admin/EnableTenant/EnableTenantRepository.js +13 -10
- package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
- package/admin/EnableTenant/EnableTenantUseCase.js +13 -10
- package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -1
- package/admin/EnableTenant/abstractions.js +4 -12
- package/admin/EnableTenant/abstractions.js.map +1 -1
- package/admin/EnableTenant/feature.js +15 -14
- package/admin/EnableTenant/feature.js.map +1 -1
- package/admin/EnableTenant/index.js +0 -2
- package/admin/EnableTenant/useEnableTenant.js +19 -18
- package/admin/EnableTenant/useEnableTenant.js.map +1 -1
- package/admin/Extension.js +32 -36
- package/admin/Extension.js.map +1 -1
- package/admin/IsRootTenant.js +14 -32
- package/admin/IsRootTenant.js.map +1 -1
- package/admin/SecurityPermission.js +11 -14
- package/admin/SecurityPermission.js.map +1 -1
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +36 -37
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -1
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js +10 -14
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -1
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +34 -33
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
- package/admin/TenantEntryList/FolderNameCell.js +19 -24
- package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +10 -14
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +3 -2
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +34 -38
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
- package/admin/TenantEntryList/ManageTenant.js +15 -16
- package/admin/TenantEntryList/ManageTenant.js.map +1 -1
- package/admin/TenantEntryList/TenantCell.js +15 -30
- package/admin/TenantEntryList/TenantCell.js.map +1 -1
- package/admin/TenantEntryList/TenantNameCell.js +35 -45
- package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
- package/admin/TenantEntryList.js +43 -60
- package/admin/TenantEntryList.js.map +1 -1
- package/admin/TenantSelector.js +31 -35
- package/admin/TenantSelector.js.map +1 -1
- package/admin/domain/permissionsSchema.js +4 -3
- package/admin/domain/permissionsSchema.js.map +1 -1
- package/admin/features/permissions/abstractions.js +2 -1
- package/admin/features/permissions/abstractions.js.map +1 -1
- package/admin/features/permissions/feature.js +2 -1
- package/admin/features/permissions/feature.js.map +1 -1
- package/admin/types.js +0 -3
- package/api/Extension.js +20 -23
- package/api/Extension.js.map +1 -1
- package/api/domain/TenantId.js +5 -7
- package/api/domain/TenantId.js.map +1 -1
- package/api/domain/TenantModel.js +59 -37
- package/api/domain/TenantModel.js.map +1 -1
- package/api/domain/TenantModelExtension.js +2 -2
- package/api/domain/TenantModelExtension.js.map +1 -1
- package/api/domain/errors.js +49 -54
- package/api/domain/errors.js.map +1 -1
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +40 -31
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
- package/api/features/AddCmsPermissions/feature.js +6 -5
- package/api/features/AddCmsPermissions/feature.js.map +1 -1
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +67 -85
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -1
- package/api/features/CreateAndInstallTenant/abstractions.js +2 -6
- package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -1
- package/api/features/CreateAndInstallTenant/feature.js +6 -6
- package/api/features/CreateAndInstallTenant/feature.js.map +1 -1
- package/api/features/CreateTenant/CreateTenantRepository.js +33 -38
- package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -1
- package/api/features/CreateTenant/CreateTenantUseCase.js +29 -32
- package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -1
- package/api/features/CreateTenant/abstractions.js +3 -8
- package/api/features/CreateTenant/abstractions.js.map +1 -1
- package/api/features/CreateTenant/feature.js +7 -9
- package/api/features/CreateTenant/feature.js.map +1 -1
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +17 -27
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -1
- package/api/features/DeleteTenantOnEntryDelete/feature.js +6 -6
- package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -1
- package/api/features/DisableTenant/DisableTenantUseCase.js +41 -53
- package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -1
- package/api/features/DisableTenant/abstractions.js +2 -1
- package/api/features/DisableTenant/abstractions.js.map +1 -1
- package/api/features/DisableTenant/events.js +17 -12
- package/api/features/DisableTenant/events.js.map +1 -1
- package/api/features/DisableTenant/feature.js +6 -6
- package/api/features/DisableTenant/feature.js.map +1 -1
- package/api/features/EnableTenant/EnableTenantUseCase.js +43 -55
- package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -1
- package/api/features/EnableTenant/abstractions.js +2 -1
- package/api/features/EnableTenant/abstractions.js.map +1 -1
- package/api/features/EnableTenant/events.js +17 -12
- package/api/features/EnableTenant/events.js.map +1 -1
- package/api/features/EnableTenant/feature.js +6 -6
- package/api/features/EnableTenant/feature.js.map +1 -1
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +21 -24
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -1
- package/api/features/GetCurrentTenant/abstractions.js +2 -7
- package/api/features/GetCurrentTenant/abstractions.js.map +1 -1
- package/api/features/GetCurrentTenant/feature.js +6 -6
- package/api/features/GetCurrentTenant/feature.js.map +1 -1
- package/api/features/GetTenantById/GetTenantByIdRepository.js +31 -36
- package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -1
- package/api/features/GetTenantById/GetTenantByIdUseCase.js +15 -19
- package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
- package/api/features/GetTenantById/abstractions.js +3 -12
- package/api/features/GetTenantById/abstractions.js.map +1 -1
- package/api/features/GetTenantById/feature.js +7 -9
- package/api/features/GetTenantById/feature.js.map +1 -1
- package/api/features/UpdateTenant/UpdateTenantRepository.js +40 -47
- package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -1
- package/api/features/UpdateTenant/UpdateTenantUseCase.js +15 -15
- package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
- package/api/features/UpdateTenant/abstractions.js +3 -12
- package/api/features/UpdateTenant/abstractions.js.map +1 -1
- package/api/features/UpdateTenant/feature.js +7 -9
- package/api/features/UpdateTenant/feature.js.map +1 -1
- package/api/graphql/CreateTenantSchema.js +53 -55
- package/api/graphql/CreateTenantSchema.js.map +1 -1
- package/api/graphql/DisableTenantSchema.js +20 -24
- package/api/graphql/DisableTenantSchema.js.map +1 -1
- package/api/graphql/EnableTenantSchema.js +20 -24
- package/api/graphql/EnableTenantSchema.js.map +1 -1
- package/api/graphql/GetCurrentTenantSchema.js +24 -28
- package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
- package/api/graphql/InstallTenantSchema.js +26 -33
- package/api/graphql/InstallTenantSchema.js.map +1 -1
- package/exports/admin/tenancy.js +1 -5
- package/exports/api/tenant-manager.js +0 -2
- package/index.js +0 -2
- package/package.json +16 -16
- package/shared/Tenant.js +23 -22
- package/shared/Tenant.js.map +1 -1
- package/shared/constants.js +2 -1
- package/shared/constants.js.map +1 -1
- package/admin/DisableTenant/index.js.map +0 -1
- package/admin/EnableTenant/index.js.map +0 -1
- package/admin/types.js.map +0 -1
- package/exports/admin/tenancy.js.map +0 -1
- package/exports/api/tenant-manager.js.map +0 -1
- package/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 {
|
|
2
|
+
import { GetTenantByIdRepository, GetTenantByIdUseCase } from "./abstractions.js";
|
|
3
3
|
import { Result } from "@webiny/feature/api";
|
|
4
|
-
class
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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,"
|
|
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
|
-
|
|
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,"
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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,"
|
|
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
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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,"
|
|
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 {
|
|
3
|
-
class
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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,"
|
|
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
|
-
|
|
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,"
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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,"
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
${inputCreateFields.map(f
|
|
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
|
|
24
|
+
${inputCreateFields.map((f)=>f.fields).join("\n")}
|
|
26
25
|
}
|
|
27
26
|
`);
|
|
28
|
-
|
|
27
|
+
builder.addTypeDefs(`
|
|
29
28
|
extend type TenantManagerMutation {
|
|
30
29
|
createTenant(input: CreateTenantInput!): BooleanResponse
|
|
31
30
|
}
|
|
32
31
|
`);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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,"
|
|
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"}
|