@webiny/api-headless-cms 5.39.0-beta.0 → 5.39.0-beta.2
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/constants.d.ts +31 -0
- package/constants.js +48 -1
- package/constants.js.map +1 -1
- package/context.js +40 -34
- package/context.js.map +1 -1
- package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
- package/crud/contentEntry/entryDataFactories/index.js +95 -0
- package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
- package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
- package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
- package/crud/contentEntry/entryDataValidation.js +29 -24
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +14 -9
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +10 -12
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.js +2 -3
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +1 -4
- package/crud/contentEntry.crud.js +140 -383
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/fields/descriptionField.js +1 -1
- package/crud/contentModel/fields/descriptionField.js.map +1 -1
- package/crud/contentModel/fields/imageField.js +3 -7
- package/crud/contentModel/fields/imageField.js.map +1 -1
- package/crud/contentModel/fields/titleField.js +1 -1
- package/crud/contentModel/fields/titleField.js.map +1 -1
- package/crud/contentModel/listModelsFromDatabase.js +3 -4
- package/crud/contentModel/listModelsFromDatabase.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +4 -5
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +96 -96
- package/crud/contentModel.crud.js +28 -26
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +1 -1
- package/crud/contentModelGroup.crud.js +18 -15
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/system.crud.js +4 -4
- package/crud/system.crud.js.map +1 -1
- package/export/crud/exporting.js +2 -3
- package/export/crud/exporting.js.map +1 -1
- package/export/crud/importing.js +3 -3
- package/export/crud/importing.js.map +1 -1
- package/export/crud/imports/importData.js +30 -3
- package/export/crud/imports/importData.js.map +1 -1
- package/export/crud/imports/importGroups.js +15 -10
- package/export/crud/imports/importGroups.js.map +1 -1
- package/export/crud/imports/importModels.js +14 -12
- package/export/crud/imports/importModels.js.map +1 -1
- package/export/crud/imports/validateGroups.js +13 -7
- package/export/crud/imports/validateGroups.js.map +1 -1
- package/export/crud/imports/validateInput.js +15 -9
- package/export/crud/imports/validateInput.js.map +1 -1
- package/export/crud/imports/validateModels.d.ts +4 -1
- package/export/crud/imports/validateModels.js +24 -25
- package/export/crud/imports/validateModels.js.map +1 -1
- package/export/types.d.ts +2 -0
- package/export/types.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -6
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +2 -7
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +44 -37
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/graphql/getSchema.js +15 -9
- package/graphql/getSchema.js.map +1 -1
- package/graphql/index.d.ts +1 -1
- package/graphql/schema/baseContentSchema.js +6 -7
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.js +1 -8
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +44 -13
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +1 -1
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +5 -5
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +11 -11
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +6 -9
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +30 -24
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +4 -5
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +4 -5
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +9 -4
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +1 -1
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +9 -4
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.d.ts +1 -2
- package/graphql/schema/resolvers/manage/resolvePublish.js +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -4
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -4
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphqlFields/datetime.js +1 -2
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.js +13 -13
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +6 -6
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
- package/graphqlFields/index.js +2 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/json.d.ts +2 -0
- package/graphqlFields/json.js +49 -0
- package/graphqlFields/json.js.map +1 -0
- package/graphqlFields/object.js +20 -28
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +24 -14
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +6 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js +34 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -0
- package/graphqlFields/richText/richTextResolver.d.ts +7 -0
- package/graphqlFields/richText/richTextResolver.js +39 -0
- package/graphqlFields/richText/richTextResolver.js.map +1 -0
- package/graphqlFields/richText.js +8 -2
- package/graphqlFields/richText.js.map +1 -1
- package/htmlRenderer/LexicalRenderer.d.ts +5 -0
- package/htmlRenderer/LexicalRenderer.js +28 -0
- package/htmlRenderer/LexicalRenderer.js.map +1 -0
- package/htmlRenderer/createLexicalHTMLRenderer.d.ts +2 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js +31 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +0 -4
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/package.json +21 -19
- package/parameters/context.js +1 -1
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +1 -2
- package/parameters/header.js.map +1 -1
- package/parameters/manual.js +6 -3
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -2
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.js +3 -4
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -1
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +1 -4
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
- package/plugins/CmsGroupPlugin.js +4 -7
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +3 -4
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -4
- package/plugins/CmsModelPlugin.js +52 -27
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -4
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/CmsRichTextRendererPlugin.d.ts +24 -0
- package/plugins/CmsRichTextRendererPlugin.js +28 -0
- package/plugins/CmsRichTextRendererPlugin.js.map +1 -0
- package/plugins/StorageOperationsCmsModelPlugin.js +3 -6
- package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +2 -2
- package/plugins/StorageTransformPlugin.js +1 -4
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +1 -0
- package/plugins/index.js +11 -0
- package/plugins/index.js.map +1 -1
- package/storage/index.d.ts +1 -0
- package/storage/index.js +15 -0
- package/storage/index.js.map +1 -0
- package/storage/json.d.ts +2 -0
- package/storage/json.js +27 -0
- package/storage/json.js.map +1 -0
- package/storage/object.js +5 -7
- package/storage/object.js.map +1 -1
- package/types.d.ts +182 -53
- package/types.js +0 -3
- package/types.js.map +1 -1
- package/utils/access.d.ts +0 -1
- package/utils/access.js +1 -10
- package/utils/access.js.map +1 -1
- package/utils/caching/Cache.js +3 -5
- package/utils/caching/Cache.js.map +1 -1
- package/utils/caching/CacheKey.js +0 -3
- package/utils/caching/CacheKey.js.map +1 -1
- package/utils/converters/Converter.js +1 -4
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +10 -6
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -3
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/date.d.ts +2 -2
- package/utils/date.js +1 -1
- package/utils/date.js.map +1 -1
- package/utils/entryStorage.js +3 -3
- package/utils/entryStorage.js.map +1 -1
- package/utils/identity.d.ts +2 -0
- package/utils/identity.js +20 -0
- package/utils/identity.js.map +1 -0
- package/utils/permissions/ModelsPermissions.js +0 -3
- package/utils/permissions/ModelsPermissions.js.map +1 -1
- package/utils/renderGetFilterFields.js +2 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderListFilterFields.js +9 -3
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +2 -1
- package/utils/renderSortEnum.js.map +1 -1
- package/validators/gte.js +1 -2
- package/validators/gte.js.map +1 -1
- package/validators/in.js +1 -2
- package/validators/in.js.map +1 -1
- package/validators/lte.js +1 -2
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +1 -2
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +1 -2
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +2 -2
- package/validators/pattern.js.map +1 -1
- package/validators/timeGte.js +1 -2
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +1 -2
- package/validators/timeLte.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -7
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -15
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.createModelsCrud = void 0;
|
|
8
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
11
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
12
10
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
@@ -22,7 +20,6 @@ var _utils2 = require("../utils");
|
|
|
22
20
|
var _ensureTypeTag = require("./contentModel/ensureTypeTag");
|
|
23
21
|
var _listModelsFromDatabase = require("./contentModel/listModelsFromDatabase");
|
|
24
22
|
var _filterAsync = require("../utils/filterAsync");
|
|
25
|
-
const _excluded = ["defaultFields"];
|
|
26
23
|
const createModelsCrud = params => {
|
|
27
24
|
const {
|
|
28
25
|
getTenant,
|
|
@@ -64,7 +61,6 @@ const createModelsCrud = params => {
|
|
|
64
61
|
});
|
|
65
62
|
};
|
|
66
63
|
const listPluginModels = async (tenant, locale) => {
|
|
67
|
-
var _getIdentity;
|
|
68
64
|
const modelPlugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
|
|
69
65
|
const cacheKey = (0, _utils2.createCacheKey)({
|
|
70
66
|
tenant,
|
|
@@ -74,7 +70,7 @@ const createModelsCrud = params => {
|
|
|
74
70
|
}) => {
|
|
75
71
|
return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${model.savedOn || "unknown"}`;
|
|
76
72
|
}).join("/"),
|
|
77
|
-
identity: context.security.isAuthorizationEnabled() ?
|
|
73
|
+
identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
|
|
78
74
|
});
|
|
79
75
|
return listPluginModelsCache.getOrSet(cacheKey, async () => {
|
|
80
76
|
const models = modelPlugins
|
|
@@ -93,12 +89,13 @@ const createModelsCrud = params => {
|
|
|
93
89
|
}
|
|
94
90
|
return true;
|
|
95
91
|
}).map(plugin => {
|
|
96
|
-
return
|
|
92
|
+
return {
|
|
93
|
+
...plugin.contentModel,
|
|
97
94
|
tags: (0, _ensureTypeTag.ensureTypeTag)(plugin.contentModel),
|
|
98
95
|
tenant,
|
|
99
96
|
locale,
|
|
100
97
|
webinyVersion: context.WEBINY_VERSION
|
|
101
|
-
}
|
|
98
|
+
};
|
|
102
99
|
});
|
|
103
100
|
return (0, _filterAsync.filterAsync)(models, filterModel);
|
|
104
101
|
});
|
|
@@ -109,11 +106,12 @@ const createModelsCrud = params => {
|
|
|
109
106
|
if (!model) {
|
|
110
107
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
111
108
|
}
|
|
112
|
-
return
|
|
109
|
+
return {
|
|
110
|
+
...model,
|
|
113
111
|
tags: (0, _ensureTypeTag.ensureTypeTag)(model),
|
|
114
112
|
tenant: model.tenant || getTenant().id,
|
|
115
113
|
locale: model.locale || getLocale().code
|
|
116
|
-
}
|
|
114
|
+
};
|
|
117
115
|
};
|
|
118
116
|
|
|
119
117
|
/**
|
|
@@ -124,7 +122,6 @@ const createModelsCrud = params => {
|
|
|
124
122
|
*/
|
|
125
123
|
const listModels = async () => {
|
|
126
124
|
return context.benchmark.measure("headlessCms.crud.models.listModels", async () => {
|
|
127
|
-
var _getIdentity2;
|
|
128
125
|
/**
|
|
129
126
|
* Maybe we can cache based on permissions, not the identity id?
|
|
130
127
|
*
|
|
@@ -142,7 +139,7 @@ const createModelsCrud = params => {
|
|
|
142
139
|
});
|
|
143
140
|
const filteredCacheKey = (0, _utils2.createCacheKey)({
|
|
144
141
|
dbCacheKey: dbCacheKey.get(),
|
|
145
|
-
identity: context.security.isAuthorizationEnabled() ?
|
|
142
|
+
identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
|
|
146
143
|
});
|
|
147
144
|
const filteredModels = await listFilteredModelsCache.getOrSet(filteredCacheKey, async () => {
|
|
148
145
|
return (0, _filterAsync.filterAsync)(databaseModels, filterModel);
|
|
@@ -236,17 +233,17 @@ const createModelsCrud = params => {
|
|
|
236
233
|
/**
|
|
237
234
|
* We need to extract the defaultFields because it is not for the CmsModel object.
|
|
238
235
|
*/
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
data = (0, _objectWithoutProperties2.default)(_removeUndefinedValue, _excluded);
|
|
236
|
+
const {
|
|
237
|
+
defaultFields,
|
|
238
|
+
...data
|
|
239
|
+
} = (0, _utils.removeUndefinedValues)(result.data);
|
|
244
240
|
if (defaultFields) {
|
|
245
241
|
(0, _defaultFields.assignModelDefaultFields)(data);
|
|
246
242
|
}
|
|
247
243
|
const group = await context.cms.getGroup(data.group);
|
|
248
244
|
const identity = getIdentity();
|
|
249
|
-
const model =
|
|
245
|
+
const model = {
|
|
246
|
+
...data,
|
|
250
247
|
modelId: data.modelId || "",
|
|
251
248
|
singularApiName: data.singularApiName,
|
|
252
249
|
pluralApiName: data.pluralApiName,
|
|
@@ -269,7 +266,7 @@ const createModelsCrud = params => {
|
|
|
269
266
|
savedOn: new Date().toISOString(),
|
|
270
267
|
lockedFields: [],
|
|
271
268
|
webinyVersion: context.WEBINY_VERSION
|
|
272
|
-
}
|
|
269
|
+
};
|
|
273
270
|
model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
|
|
274
271
|
try {
|
|
275
272
|
await onModelBeforeCreate.publish({
|
|
@@ -323,7 +320,9 @@ const createModelsCrud = params => {
|
|
|
323
320
|
name: groupData.name
|
|
324
321
|
};
|
|
325
322
|
}
|
|
326
|
-
const model =
|
|
323
|
+
const model = {
|
|
324
|
+
...original,
|
|
325
|
+
...data,
|
|
327
326
|
titleFieldId: data.titleFieldId === undefined ? original.titleFieldId : data.titleFieldId,
|
|
328
327
|
descriptionFieldId: data.descriptionFieldId === undefined ? original.descriptionFieldId : data.descriptionFieldId,
|
|
329
328
|
imageFieldId: data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,
|
|
@@ -333,7 +332,7 @@ const createModelsCrud = params => {
|
|
|
333
332
|
locale: original.locale || getLocale().code,
|
|
334
333
|
webinyVersion: context.WEBINY_VERSION,
|
|
335
334
|
savedOn: new Date().toISOString()
|
|
336
|
-
}
|
|
335
|
+
};
|
|
337
336
|
model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
|
|
338
337
|
try {
|
|
339
338
|
await onModelBeforeUpdate.publish({
|
|
@@ -366,11 +365,12 @@ const createModelsCrud = params => {
|
|
|
366
365
|
model: initialModel,
|
|
367
366
|
original
|
|
368
367
|
} = params;
|
|
369
|
-
const model =
|
|
368
|
+
const model = {
|
|
369
|
+
...initialModel,
|
|
370
370
|
tenant: initialModel.tenant || getTenant().id,
|
|
371
371
|
locale: initialModel.locale || getLocale().code,
|
|
372
372
|
webinyVersion: context.WEBINY_VERSION
|
|
373
|
-
}
|
|
373
|
+
};
|
|
374
374
|
try {
|
|
375
375
|
await onModelBeforeUpdate.publish({
|
|
376
376
|
input: {},
|
|
@@ -404,9 +404,10 @@ const createModelsCrud = params => {
|
|
|
404
404
|
* Get a model record; this will also perform ownership validation.
|
|
405
405
|
*/
|
|
406
406
|
const original = await getModel(modelId);
|
|
407
|
-
const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync(
|
|
407
|
+
const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
|
|
408
|
+
...input,
|
|
408
409
|
description: input.description || original.description
|
|
409
|
-
})
|
|
410
|
+
});
|
|
410
411
|
if (!result.success) {
|
|
411
412
|
throw (0, _utils.createZodError)(result.error);
|
|
412
413
|
}
|
|
@@ -427,7 +428,8 @@ const createModelsCrud = params => {
|
|
|
427
428
|
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
428
429
|
}
|
|
429
430
|
const identity = getIdentity();
|
|
430
|
-
const model =
|
|
431
|
+
const model = {
|
|
432
|
+
...original,
|
|
431
433
|
singularApiName: data.singularApiName,
|
|
432
434
|
pluralApiName: data.pluralApiName,
|
|
433
435
|
locale: locale.code,
|
|
@@ -448,7 +450,7 @@ const createModelsCrud = params => {
|
|
|
448
450
|
savedOn: new Date().toISOString(),
|
|
449
451
|
lockedFields: [],
|
|
450
452
|
webinyVersion: context.WEBINY_VERSION
|
|
451
|
-
}
|
|
453
|
+
};
|
|
452
454
|
try {
|
|
453
455
|
await onModelBeforeCreateFrom.publish({
|
|
454
456
|
input: data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_excluded","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","filterModel","ownsModel","owns","createdBy","throw","canAccessModel","listPluginModels","tenant","locale","_getIdentity","modelPlugins","plugins","byType","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","_objectSpread2","default","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","_getIdentity2","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","_removeUndefinedValue","removeUndefinedValues","data","defaultFields","_objectWithoutProperties2","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = async (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\n };\n\n const filterModel = async (model: CmsModel): Promise<boolean> => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({\n model\n });\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n return filterAsync(models, filterModel);\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, filterModel);\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({\n model\n });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","filterModel","ownsModel","owns","createdBy","throw","canAccessModel","listPluginModels","tenant","locale","modelPlugins","plugins","byType","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = async (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\n };\n\n const filterModel = async (model: CmsModel): Promise<boolean> => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({\n model\n });\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n return filterAsync(models, filterModel);\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, filterModel);\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({\n model\n });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@ export declare const createGroupCreateValidation: () => zod.ZodObject<{
|
|
|
6
6
|
description: zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>, string, string | null | undefined>;
|
|
7
7
|
icon: zod.ZodString;
|
|
8
8
|
}, "strip", zod.ZodTypeAny, {
|
|
9
|
+
description: string;
|
|
9
10
|
name: string;
|
|
10
11
|
slug: string;
|
|
11
|
-
description: string;
|
|
12
12
|
icon: string;
|
|
13
13
|
id?: string | null | undefined;
|
|
14
14
|
}, {
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.createModelGroupsCrud = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
9
|
var _CmsGroupPlugin = require("../plugins/CmsGroupPlugin");
|
|
11
10
|
var _pubsub = require("@webiny/pubsub");
|
|
@@ -52,12 +51,11 @@ const createModelGroupsCrud = params => {
|
|
|
52
51
|
listFilteredDatabaseGroupsCache.clear();
|
|
53
52
|
};
|
|
54
53
|
const fetchPluginGroups = (tenant, locale) => {
|
|
55
|
-
var _getIdentity;
|
|
56
54
|
const pluginGroups = context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type);
|
|
57
55
|
const cacheKey = (0, _utils2.createCacheKey)({
|
|
58
56
|
tenant,
|
|
59
57
|
locale,
|
|
60
|
-
identity: context.security.isAuthorizationEnabled() ?
|
|
58
|
+
identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,
|
|
61
59
|
groups: pluginGroups.map(({
|
|
62
60
|
contentModelGroup: group
|
|
63
61
|
}) => {
|
|
@@ -81,17 +79,17 @@ const createModelGroupsCrud = params => {
|
|
|
81
79
|
}
|
|
82
80
|
return true;
|
|
83
81
|
}).map(plugin => {
|
|
84
|
-
return
|
|
82
|
+
return {
|
|
83
|
+
...plugin.contentModelGroup,
|
|
85
84
|
tenant,
|
|
86
85
|
locale,
|
|
87
86
|
webinyVersion: context.WEBINY_VERSION
|
|
88
|
-
}
|
|
87
|
+
};
|
|
89
88
|
});
|
|
90
89
|
return (0, _filterAsync.filterAsync)(groups, filterGroup);
|
|
91
90
|
});
|
|
92
91
|
};
|
|
93
92
|
const fetchGroups = async (tenant, locale) => {
|
|
94
|
-
var _getIdentity2;
|
|
95
93
|
const pluginGroups = await fetchPluginGroups(tenant, locale);
|
|
96
94
|
/**
|
|
97
95
|
* Maybe we can cache based on permissions, not the identity id?
|
|
@@ -111,7 +109,7 @@ const createModelGroupsCrud = params => {
|
|
|
111
109
|
});
|
|
112
110
|
const filteredCacheKey = (0, _utils2.createCacheKey)({
|
|
113
111
|
dbCacheKey: cacheKey.get(),
|
|
114
|
-
identity: context.security.isAuthorizationEnabled() ?
|
|
112
|
+
identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
|
|
115
113
|
});
|
|
116
114
|
const groups = await listFilteredDatabaseGroupsCache.getOrSet(filteredCacheKey, async () => {
|
|
117
115
|
return (0, _filterAsync.filterAsync)(databaseGroups, filterGroup);
|
|
@@ -201,7 +199,8 @@ const createModelGroupsCrud = params => {
|
|
|
201
199
|
const data = result.data;
|
|
202
200
|
const identity = getIdentity();
|
|
203
201
|
const id = data.id || (0, _utils.mdbid)();
|
|
204
|
-
const group =
|
|
202
|
+
const group = {
|
|
203
|
+
...data,
|
|
205
204
|
id,
|
|
206
205
|
tenant: getTenant().id,
|
|
207
206
|
locale: getLocale().code,
|
|
@@ -213,7 +212,7 @@ const createModelGroupsCrud = params => {
|
|
|
213
212
|
type: identity.type
|
|
214
213
|
},
|
|
215
214
|
webinyVersion: context.WEBINY_VERSION
|
|
216
|
-
}
|
|
215
|
+
};
|
|
217
216
|
try {
|
|
218
217
|
await onGroupBeforeCreate.publish({
|
|
219
218
|
group
|
|
@@ -232,10 +231,11 @@ const createModelGroupsCrud = params => {
|
|
|
232
231
|
group,
|
|
233
232
|
error: ex
|
|
234
233
|
});
|
|
235
|
-
throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE",
|
|
234
|
+
throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", {
|
|
235
|
+
...(ex.data || {}),
|
|
236
236
|
group,
|
|
237
237
|
input
|
|
238
|
-
})
|
|
238
|
+
});
|
|
239
239
|
}
|
|
240
240
|
};
|
|
241
241
|
const updateGroup = async (id, input) => {
|
|
@@ -258,11 +258,13 @@ const createModelGroupsCrud = params => {
|
|
|
258
258
|
if (Object.keys(data).length === 0) {
|
|
259
259
|
return original;
|
|
260
260
|
}
|
|
261
|
-
const group =
|
|
261
|
+
const group = {
|
|
262
|
+
...original,
|
|
263
|
+
...data,
|
|
262
264
|
locale: getLocale().code,
|
|
263
265
|
tenant: getTenant().id,
|
|
264
266
|
savedOn: new Date().toISOString()
|
|
265
|
-
}
|
|
267
|
+
};
|
|
266
268
|
try {
|
|
267
269
|
await onGroupBeforeUpdate.publish({
|
|
268
270
|
original,
|
|
@@ -316,9 +318,10 @@ const createModelGroupsCrud = params => {
|
|
|
316
318
|
group,
|
|
317
319
|
error: ex
|
|
318
320
|
});
|
|
319
|
-
throw new _error.default(ex.message, ex.code || "DELETE_ERROR",
|
|
321
|
+
throw new _error.default(ex.message, ex.code || "DELETE_ERROR", {
|
|
322
|
+
...(ex.data || {}),
|
|
320
323
|
id
|
|
321
|
-
})
|
|
324
|
+
});
|
|
322
325
|
}
|
|
323
326
|
return true;
|
|
324
327
|
};
|