@webiny/api-headless-cms 0.0.0-unstable.d4f203fa97 → 0.0.0-unstable.d7f521b032
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/context.d.ts +5 -2
- package/context.js +53 -19
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +0 -5
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +0 -3
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +0 -3
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +1 -40
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +16 -29
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +12 -64
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +72 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.js +120 -181
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.js +0 -2
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.js +0 -2
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.js +0 -2
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.js +0 -2
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +2 -3
- package/crud/contentModel/beforeCreate.js +7 -36
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +0 -10
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +2 -4
- package/crud/contentModel/beforeUpdate.js +2 -7
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +4 -3
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.d.ts +3 -4
- package/crud/contentModel/validateModel.js +6 -11
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +3 -4
- package/crud/contentModel/validateModelFields.js +118 -97
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +97 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +219 -269
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.js +0 -12
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +0 -8
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.js +0 -5
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +34 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +53 -95
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +0 -12
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +2 -37
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +2 -5
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +8 -3
- package/graphql/buildSchemaPlugins.js +6 -14
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +7 -0
- package/graphql/createExecutableSchema.js +29 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +31 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.js +90 -74
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -3
- package/graphql/index.js +2 -46
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +6 -2
- package/graphql/schema/baseContentSchema.js +9 -13
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +39 -65
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +9 -22
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +42 -25
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +20 -27
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +0 -26
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +8 -19
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +0 -10
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +5 -10
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +11 -15
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +0 -8
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +63 -65
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +69 -85
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +208 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +19 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/file.js +0 -8
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +0 -10
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +2 -12
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +0 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +112 -98
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +48 -96
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +0 -9
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +0 -11
- package/graphqlFields/text.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -26
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +0 -16
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +0 -4
- package/modelManager/index.js.map +1 -1
- package/package.json +28 -28
- package/parameters/context.js +0 -4
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +0 -11
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +1 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +0 -11
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +0 -8
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +0 -5
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.js +2 -38
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +0 -7
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +0 -9
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +22 -10
- package/plugins/index.js.map +1 -1
- package/storage/default.js +0 -3
- package/storage/default.js.map +1 -1
- package/storage/object.js +4 -20
- package/storage/object.js.map +1 -1
- package/types.d.ts +235 -57
- package/types.js +62 -69
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +3 -26
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +0 -3
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +0 -13
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +14 -34
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +0 -26
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +64 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +2 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +22 -35
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +10 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +23 -19
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +8 -23
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +0 -6
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +2 -9
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +6 -14
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +2 -9
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +4 -10
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +21 -11
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +0 -4
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +0 -7
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +0 -7
- package/validators/dateLte.js.map +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +20 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/gte.js +0 -8
- package/validators/gte.js.map +1 -1
- package/validators/in.js +0 -8
- package/validators/in.js.map +1 -1
- package/validators/index.js +2 -16
- package/validators/index.js.map +1 -1
- package/validators/lte.js +0 -8
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +0 -8
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +0 -8
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +0 -9
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +0 -2
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +0 -8
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +0 -2
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +0 -2
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +0 -2
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +0 -2
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +0 -5
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +0 -8
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +0 -8
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +0 -7
- package/validators/unique.js.map +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -85
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
- package/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -77
- package/utils/filterModelFields.js.map +0 -1
|
@@ -1,106 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createModelsCrud = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
13
|
-
|
|
10
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
14
11
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
|
-
|
|
16
12
|
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
17
|
-
|
|
18
|
-
var _models = require("./contentModel/models");
|
|
19
|
-
|
|
20
|
-
var _createFieldModels = require("./contentModel/createFieldModels");
|
|
21
|
-
|
|
22
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
23
|
-
|
|
24
13
|
var _pubsub = require("@webiny/pubsub");
|
|
25
|
-
|
|
26
14
|
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
27
|
-
|
|
28
15
|
var _beforeUpdate = require("./contentModel/beforeUpdate");
|
|
29
|
-
|
|
30
16
|
var _beforeDelete = require("./contentModel/beforeDelete");
|
|
31
|
-
|
|
32
17
|
var _afterCreate = require("./contentModel/afterCreate");
|
|
33
|
-
|
|
34
18
|
var _afterUpdate = require("./contentModel/afterUpdate");
|
|
35
|
-
|
|
36
19
|
var _afterDelete = require("./contentModel/afterDelete");
|
|
37
|
-
|
|
38
20
|
var _afterCreateFrom = require("./contentModel/afterCreateFrom");
|
|
39
|
-
|
|
40
21
|
var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
|
|
41
|
-
|
|
42
22
|
var _permissions = require("../utils/permissions");
|
|
43
|
-
|
|
44
23
|
var _filterAsync = require("../utils/filterAsync");
|
|
45
|
-
|
|
46
24
|
var _ownership = require("../utils/ownership");
|
|
47
|
-
|
|
48
25
|
var _access = require("../utils/access");
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
var _semver = _interopRequireDefault(require("semver"));
|
|
53
|
-
|
|
26
|
+
var _validation = require("./contentModel/validation");
|
|
27
|
+
var _utils = require("@webiny/utils");
|
|
54
28
|
/**
|
|
55
|
-
*
|
|
56
|
-
* Required because of the 5.33.0 upgrade.
|
|
57
|
-
* Until the upgrade is done, API will break because there is no storageId assigned.
|
|
29
|
+
* Given a model, return an array of tags ensuring the `type` tag is set.
|
|
58
30
|
*/
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
|
|
66
|
-
field.settings.fields = attachStorageIdToFields(field.settings.fields);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (!field.storageId) {
|
|
70
|
-
field.storageId = field.fieldId;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return field;
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const attachStorageIdToModelFields = model => {
|
|
78
|
-
if (!model.webinyVersion) {
|
|
79
|
-
return model.fields;
|
|
31
|
+
const ensureTypeTag = model => {
|
|
32
|
+
// Let's make sure we have a `type` tag assigned.
|
|
33
|
+
// If `type` tag is not set, set it to a default one (`model`).
|
|
34
|
+
const tags = model.tags || [];
|
|
35
|
+
if (!tags.some(tag => tag.startsWith("type:"))) {
|
|
36
|
+
tags.push("type:model");
|
|
80
37
|
}
|
|
81
|
-
|
|
82
|
-
const version = _semver.default.coerce(model.webinyVersion);
|
|
83
|
-
|
|
84
|
-
if (!version) {
|
|
85
|
-
return model.fields;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Unfortunately we need to check for beta and next.
|
|
89
|
-
* TODO remove after 5.33.0
|
|
90
|
-
*/
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (model.webinyVersion.match(/beta|next/)) {
|
|
94
|
-
return attachStorageIdToFields(model.fields);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (_semver.default.compare(version, featureVersion) >= 0) {
|
|
98
|
-
return model.fields;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return attachStorageIdToFields(model.fields);
|
|
38
|
+
return tags;
|
|
102
39
|
};
|
|
103
|
-
|
|
104
40
|
const createModelsCrud = params => {
|
|
105
41
|
const {
|
|
106
42
|
getTenant,
|
|
@@ -119,105 +55,80 @@ const createModelsCrud = params => {
|
|
|
119
55
|
});
|
|
120
56
|
return [models.map(model => {
|
|
121
57
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
122
|
-
|
|
58
|
+
tags: ensureTypeTag(model),
|
|
123
59
|
tenant: model.tenant || getTenant().id,
|
|
124
60
|
locale: model.locale || getLocale().code
|
|
125
61
|
});
|
|
126
62
|
})];
|
|
127
63
|
})
|
|
128
64
|
};
|
|
129
|
-
|
|
130
65
|
const clearModelsCache = () => {
|
|
131
66
|
for (const loader of Object.values(loaders)) {
|
|
132
67
|
loader.clearAll();
|
|
133
68
|
}
|
|
134
69
|
};
|
|
135
|
-
|
|
136
70
|
const managers = new Map();
|
|
137
|
-
|
|
138
71
|
const updateManager = async (context, model) => {
|
|
139
72
|
const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
|
|
140
73
|
managers.set(model.modelId, manager);
|
|
141
74
|
return manager;
|
|
142
75
|
};
|
|
143
|
-
|
|
144
76
|
const checkModelPermissions = check => {
|
|
145
77
|
return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
|
|
146
78
|
rwd: check
|
|
147
79
|
});
|
|
148
80
|
};
|
|
149
|
-
|
|
150
81
|
const getModelsAsPlugins = () => {
|
|
151
82
|
const tenant = getTenant().id;
|
|
152
83
|
const locale = getLocale().code;
|
|
153
|
-
|
|
84
|
+
return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
|
|
154
85
|
/**
|
|
155
86
|
* We need to filter out models that are not for this tenant or locale.
|
|
156
87
|
* If it does not have tenant or locale define, it is for every locale and tenant
|
|
157
|
-
|
|
158
|
-
.filter(plugin => {
|
|
88
|
+
*/.filter(plugin => {
|
|
159
89
|
const {
|
|
160
|
-
tenant:
|
|
161
|
-
locale:
|
|
90
|
+
tenant: modelTenant,
|
|
91
|
+
locale: modelLocale
|
|
162
92
|
} = plugin.contentModel;
|
|
163
|
-
|
|
164
|
-
if (t && t !== tenant) {
|
|
93
|
+
if (modelTenant && modelTenant !== tenant) {
|
|
165
94
|
return false;
|
|
166
|
-
} else if (
|
|
95
|
+
} else if (modelLocale && modelLocale !== locale) {
|
|
167
96
|
return false;
|
|
168
97
|
}
|
|
169
|
-
|
|
170
98
|
return true;
|
|
171
99
|
}).map(plugin => {
|
|
172
100
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
101
|
+
tags: ensureTypeTag(plugin.contentModel),
|
|
173
102
|
tenant,
|
|
174
103
|
locale,
|
|
175
104
|
webinyVersion: context.WEBINY_VERSION
|
|
176
105
|
});
|
|
177
106
|
});
|
|
178
|
-
/**
|
|
179
|
-
* Only point where we can truly validate the user model is in the runtime.
|
|
180
|
-
*/
|
|
181
|
-
|
|
182
|
-
for (const model of models) {
|
|
183
|
-
(0, _validateModelFields.validateModelFields)({
|
|
184
|
-
model,
|
|
185
|
-
plugins: context.plugins
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return models;
|
|
190
107
|
};
|
|
191
|
-
|
|
192
108
|
const modelsGet = async modelId => {
|
|
193
109
|
const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
|
|
194
|
-
|
|
195
110
|
if (pluginModel) {
|
|
196
111
|
return pluginModel;
|
|
197
112
|
}
|
|
198
|
-
|
|
199
113
|
const model = await storageOperations.models.get({
|
|
200
114
|
tenant: getTenant().id,
|
|
201
115
|
locale: getLocale().code,
|
|
202
116
|
modelId
|
|
203
117
|
});
|
|
204
|
-
|
|
205
118
|
if (!model) {
|
|
206
119
|
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
207
120
|
}
|
|
208
|
-
|
|
209
121
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
122
|
+
tags: ensureTypeTag(model),
|
|
210
123
|
tenant: model.tenant || getTenant().id,
|
|
211
124
|
locale: model.locale || getLocale().code
|
|
212
125
|
});
|
|
213
126
|
};
|
|
214
|
-
|
|
215
127
|
const modelsList = async () => {
|
|
216
128
|
const databaseModels = await loaders.listModels.load("listModels");
|
|
217
129
|
const pluginsModels = getModelsAsPlugins();
|
|
218
130
|
return databaseModels.concat(pluginsModels);
|
|
219
131
|
};
|
|
220
|
-
|
|
221
132
|
const listModels = async () => {
|
|
222
133
|
const permission = await checkModelPermissions("r");
|
|
223
134
|
const models = await modelsList();
|
|
@@ -225,11 +136,9 @@ const createModelsCrud = params => {
|
|
|
225
136
|
if (!(0, _ownership.validateOwnership)(context, permission, model)) {
|
|
226
137
|
return false;
|
|
227
138
|
}
|
|
228
|
-
|
|
229
139
|
return (0, _access.validateModelAccess)(context, model);
|
|
230
140
|
});
|
|
231
141
|
};
|
|
232
|
-
|
|
233
142
|
const getModel = async modelId => {
|
|
234
143
|
const permission = await checkModelPermissions("r");
|
|
235
144
|
const model = await modelsGet(modelId);
|
|
@@ -237,45 +146,54 @@ const createModelsCrud = params => {
|
|
|
237
146
|
await (0, _access.checkModelAccess)(context, model);
|
|
238
147
|
return model;
|
|
239
148
|
};
|
|
240
|
-
|
|
241
149
|
const getModelManager = async target => {
|
|
242
150
|
const modelId = typeof target === "string" ? target : target.modelId;
|
|
243
|
-
|
|
244
151
|
if (managers.has(modelId)) {
|
|
245
152
|
return managers.get(modelId);
|
|
246
153
|
}
|
|
247
|
-
|
|
248
154
|
const models = await modelsList();
|
|
249
155
|
const model = models.find(m => m.modelId === modelId);
|
|
250
|
-
|
|
251
156
|
if (!model) {
|
|
252
157
|
throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
|
|
253
158
|
}
|
|
254
|
-
|
|
255
159
|
return await updateManager(context, model);
|
|
256
|
-
};
|
|
257
|
-
|
|
160
|
+
};
|
|
258
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Create
|
|
164
|
+
*/
|
|
259
165
|
const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
|
|
260
|
-
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
261
|
-
|
|
166
|
+
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
167
|
+
const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
|
|
168
|
+
/**
|
|
169
|
+
* Create from / clone
|
|
170
|
+
*/
|
|
262
171
|
const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
|
|
263
|
-
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
264
|
-
|
|
172
|
+
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
173
|
+
const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
|
|
174
|
+
/**
|
|
175
|
+
* Update
|
|
176
|
+
*/
|
|
265
177
|
const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
|
|
266
|
-
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
267
|
-
|
|
178
|
+
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
179
|
+
const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
|
|
180
|
+
/**
|
|
181
|
+
* Delete
|
|
182
|
+
*/
|
|
268
183
|
const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
|
|
269
184
|
const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
|
|
185
|
+
const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
|
|
186
|
+
/**
|
|
187
|
+
* Initialize
|
|
188
|
+
*/
|
|
270
189
|
const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
|
|
271
190
|
/**
|
|
272
191
|
* We need to assign some default behaviors.
|
|
273
192
|
*/
|
|
274
|
-
|
|
275
193
|
(0, _beforeCreate.assignModelBeforeCreate)({
|
|
276
194
|
onModelBeforeCreate,
|
|
277
195
|
onModelBeforeCreateFrom,
|
|
278
|
-
|
|
196
|
+
context,
|
|
279
197
|
storageOperations
|
|
280
198
|
});
|
|
281
199
|
(0, _afterCreate.assignModelAfterCreate)({
|
|
@@ -284,8 +202,7 @@ const createModelsCrud = params => {
|
|
|
284
202
|
});
|
|
285
203
|
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
286
204
|
onModelBeforeUpdate,
|
|
287
|
-
|
|
288
|
-
storageOperations
|
|
205
|
+
context
|
|
289
206
|
});
|
|
290
207
|
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
291
208
|
context,
|
|
@@ -316,42 +233,43 @@ const createModelsCrud = params => {
|
|
|
316
233
|
onAfterModelUpdate: onModelAfterUpdate,
|
|
317
234
|
onBeforeModelDelete: onModelBeforeDelete,
|
|
318
235
|
onAfterModelDelete: onModelAfterDelete,
|
|
319
|
-
|
|
320
236
|
/**
|
|
321
237
|
* Released in 5.34.0
|
|
322
238
|
*/
|
|
323
239
|
onModelBeforeCreate,
|
|
324
240
|
onModelAfterCreate,
|
|
241
|
+
onModelCreateError,
|
|
325
242
|
onModelBeforeCreateFrom,
|
|
326
243
|
onModelAfterCreateFrom,
|
|
244
|
+
onModelCreateFromError,
|
|
327
245
|
onModelBeforeUpdate,
|
|
328
246
|
onModelAfterUpdate,
|
|
247
|
+
onModelUpdateError,
|
|
329
248
|
onModelBeforeDelete,
|
|
330
249
|
onModelAfterDelete,
|
|
250
|
+
onModelDeleteError,
|
|
331
251
|
onModelInitialize,
|
|
332
252
|
clearModelsCache,
|
|
333
253
|
getModel,
|
|
334
254
|
listModels,
|
|
335
|
-
|
|
336
|
-
async createModel(inputData) {
|
|
255
|
+
async createModel(input) {
|
|
337
256
|
await checkModelPermissions("w");
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
257
|
+
const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
|
|
258
|
+
if (!result.success) {
|
|
259
|
+
throw (0, _utils.createZodError)(result.error);
|
|
260
|
+
}
|
|
261
|
+
const data = result.data;
|
|
341
262
|
context.security.disableAuthorization();
|
|
342
|
-
const group = await context.cms.getGroup(
|
|
263
|
+
const group = await context.cms.getGroup(data.group);
|
|
343
264
|
context.security.enableAuthorization();
|
|
344
|
-
|
|
345
265
|
if (!group) {
|
|
346
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
266
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
347
267
|
}
|
|
348
|
-
|
|
349
|
-
const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
|
|
350
268
|
const identity = getIdentity();
|
|
351
269
|
const model = {
|
|
352
|
-
name:
|
|
353
|
-
description:
|
|
354
|
-
modelId:
|
|
270
|
+
name: data.name,
|
|
271
|
+
description: data.description || "",
|
|
272
|
+
modelId: data.modelId || "",
|
|
355
273
|
titleFieldId: "id",
|
|
356
274
|
locale: getLocale().code,
|
|
357
275
|
tenant: getTenant().id,
|
|
@@ -366,27 +284,37 @@ const createModelsCrud = params => {
|
|
|
366
284
|
},
|
|
367
285
|
createdOn: new Date().toISOString(),
|
|
368
286
|
savedOn: new Date().toISOString(),
|
|
369
|
-
fields,
|
|
287
|
+
fields: data.fields,
|
|
370
288
|
lockedFields: [],
|
|
371
|
-
layout:
|
|
289
|
+
layout: data.layout || [],
|
|
290
|
+
tags: [...(data.tags || [])],
|
|
372
291
|
webinyVersion: context.WEBINY_VERSION
|
|
373
292
|
};
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
293
|
+
model.tags = ensureTypeTag(model);
|
|
294
|
+
try {
|
|
295
|
+
await onModelBeforeCreate.publish({
|
|
296
|
+
input: data,
|
|
297
|
+
model
|
|
298
|
+
});
|
|
299
|
+
const createdModel = await storageOperations.models.create({
|
|
300
|
+
model
|
|
301
|
+
});
|
|
302
|
+
loaders.listModels.clearAll();
|
|
303
|
+
await updateManager(context, model);
|
|
304
|
+
await onModelAfterCreate.publish({
|
|
305
|
+
input: data,
|
|
306
|
+
model: createdModel
|
|
307
|
+
});
|
|
308
|
+
return createdModel;
|
|
309
|
+
} catch (ex) {
|
|
310
|
+
await onModelCreateError.publish({
|
|
311
|
+
input: data,
|
|
312
|
+
model,
|
|
313
|
+
error: ex
|
|
314
|
+
});
|
|
315
|
+
throw ex;
|
|
316
|
+
}
|
|
388
317
|
},
|
|
389
|
-
|
|
390
318
|
/**
|
|
391
319
|
* Method does not check for permissions or ownership.
|
|
392
320
|
* @internal
|
|
@@ -401,60 +329,65 @@ const createModelsCrud = params => {
|
|
|
401
329
|
locale: initialModel.locale || getLocale().code,
|
|
402
330
|
webinyVersion: context.WEBINY_VERSION
|
|
403
331
|
});
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
332
|
+
try {
|
|
333
|
+
await onModelBeforeUpdate.publish({
|
|
334
|
+
input: {},
|
|
335
|
+
original,
|
|
336
|
+
model
|
|
337
|
+
});
|
|
338
|
+
const resultModel = await storageOperations.models.update({
|
|
339
|
+
model
|
|
340
|
+
});
|
|
341
|
+
await updateManager(context, resultModel);
|
|
342
|
+
loaders.listModels.clearAll();
|
|
343
|
+
await onModelAfterUpdate.publish({
|
|
344
|
+
input: {},
|
|
345
|
+
original,
|
|
346
|
+
model: resultModel
|
|
347
|
+
});
|
|
348
|
+
return resultModel;
|
|
349
|
+
} catch (ex) {
|
|
350
|
+
await onModelUpdateError.publish({
|
|
351
|
+
input: {},
|
|
352
|
+
original,
|
|
353
|
+
model,
|
|
354
|
+
error: ex
|
|
355
|
+
});
|
|
356
|
+
throw ex;
|
|
357
|
+
}
|
|
420
358
|
},
|
|
421
|
-
|
|
422
|
-
async createModelFrom(modelId, data) {
|
|
359
|
+
async createModelFrom(modelId, userInput) {
|
|
423
360
|
await checkModelPermissions("w");
|
|
424
361
|
/**
|
|
425
362
|
* Get a model record; this will also perform ownership validation.
|
|
426
363
|
*/
|
|
427
|
-
|
|
428
364
|
const original = await getModel(modelId);
|
|
429
|
-
const
|
|
430
|
-
name:
|
|
431
|
-
modelId:
|
|
432
|
-
description:
|
|
433
|
-
group:
|
|
434
|
-
locale:
|
|
365
|
+
const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
|
|
366
|
+
name: userInput.name,
|
|
367
|
+
modelId: userInput.modelId,
|
|
368
|
+
description: userInput.description || original.description,
|
|
369
|
+
group: userInput.group,
|
|
370
|
+
locale: userInput.locale
|
|
435
371
|
});
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
372
|
+
if (!result.success) {
|
|
373
|
+
throw (0, _utils.createZodError)(result.error);
|
|
374
|
+
}
|
|
375
|
+
const data = result.data;
|
|
376
|
+
const locale = await context.i18n.getLocale(data.locale || original.locale);
|
|
440
377
|
if (!locale) {
|
|
441
|
-
throw new _handlerGraphql.NotFoundError(`There is no locale "${
|
|
378
|
+
throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
|
|
442
379
|
}
|
|
443
380
|
/**
|
|
444
381
|
* Use storage operations directly because we cannot get group from different locale via context methods.
|
|
445
382
|
*/
|
|
446
|
-
|
|
447
|
-
|
|
448
383
|
const group = await context.cms.storageOperations.groups.get({
|
|
449
|
-
id:
|
|
384
|
+
id: data.group,
|
|
450
385
|
tenant: original.tenant,
|
|
451
386
|
locale: locale.code
|
|
452
387
|
});
|
|
453
|
-
|
|
454
388
|
if (!group) {
|
|
455
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
389
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
456
390
|
}
|
|
457
|
-
|
|
458
391
|
const identity = getIdentity();
|
|
459
392
|
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
|
|
460
393
|
locale: locale.code,
|
|
@@ -462,9 +395,9 @@ const createModelsCrud = params => {
|
|
|
462
395
|
id: group.id,
|
|
463
396
|
name: group.name
|
|
464
397
|
},
|
|
465
|
-
name:
|
|
466
|
-
modelId:
|
|
467
|
-
description:
|
|
398
|
+
name: data.name,
|
|
399
|
+
modelId: data.modelId || "",
|
|
400
|
+
description: data.description || "",
|
|
468
401
|
createdBy: {
|
|
469
402
|
id: identity.id,
|
|
470
403
|
displayName: identity.displayName,
|
|
@@ -475,112 +408,130 @@ const createModelsCrud = params => {
|
|
|
475
408
|
lockedFields: [],
|
|
476
409
|
webinyVersion: context.WEBINY_VERSION
|
|
477
410
|
});
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
411
|
+
try {
|
|
412
|
+
await onModelBeforeCreateFrom.publish({
|
|
413
|
+
input: data,
|
|
414
|
+
model,
|
|
415
|
+
original
|
|
416
|
+
});
|
|
417
|
+
const createdModel = await storageOperations.models.create({
|
|
418
|
+
model
|
|
419
|
+
});
|
|
420
|
+
loaders.listModels.clearAll();
|
|
421
|
+
await updateManager(context, model);
|
|
422
|
+
await onModelAfterCreateFrom.publish({
|
|
423
|
+
input: data,
|
|
424
|
+
original,
|
|
425
|
+
model: createdModel
|
|
426
|
+
});
|
|
427
|
+
return createdModel;
|
|
428
|
+
} catch (ex) {
|
|
429
|
+
await onModelCreateFromError.publish({
|
|
430
|
+
input: data,
|
|
431
|
+
original,
|
|
432
|
+
model,
|
|
433
|
+
error: ex
|
|
434
|
+
});
|
|
435
|
+
throw ex;
|
|
436
|
+
}
|
|
494
437
|
},
|
|
438
|
+
async updateModel(modelId, input) {
|
|
439
|
+
await checkModelPermissions("w");
|
|
495
440
|
|
|
496
|
-
|
|
497
|
-
await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
|
|
498
|
-
|
|
441
|
+
// Get a model record; this will also perform ownership validation.
|
|
499
442
|
const original = await getModel(modelId);
|
|
500
|
-
const
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
if (Object.keys(input).length === 0) {
|
|
443
|
+
const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
|
|
444
|
+
if (!result.success) {
|
|
445
|
+
throw (0, _utils.createZodError)(result.error);
|
|
446
|
+
}
|
|
447
|
+
const data = result.data;
|
|
448
|
+
if (Object.keys(data).length === 0) {
|
|
507
449
|
/**
|
|
508
450
|
* We need to return the original if nothing is to be updated.
|
|
509
451
|
*/
|
|
510
452
|
return original;
|
|
511
453
|
}
|
|
512
|
-
|
|
513
454
|
let group = {
|
|
514
455
|
id: original.group.id,
|
|
515
456
|
name: original.group.name
|
|
516
457
|
};
|
|
517
|
-
|
|
518
|
-
if (input.group) {
|
|
458
|
+
if (data.group) {
|
|
519
459
|
context.security.disableAuthorization();
|
|
520
|
-
const groupData = await context.cms.getGroup(
|
|
460
|
+
const groupData = await context.cms.getGroup(data.group);
|
|
521
461
|
context.security.enableAuthorization();
|
|
522
|
-
|
|
523
462
|
if (!groupData) {
|
|
524
|
-
throw new _handlerGraphql.NotFoundError(`There is no group "${
|
|
463
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
|
|
525
464
|
}
|
|
526
|
-
|
|
527
465
|
group = {
|
|
528
466
|
id: groupData.id,
|
|
529
467
|
name: groupData.name
|
|
530
468
|
};
|
|
531
469
|
}
|
|
532
|
-
|
|
533
|
-
const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
|
|
534
|
-
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
|
|
470
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
|
|
535
471
|
group,
|
|
472
|
+
description: data.description || original.description,
|
|
536
473
|
tenant: original.tenant || getTenant().id,
|
|
537
474
|
locale: original.locale || getLocale().code,
|
|
538
475
|
webinyVersion: context.WEBINY_VERSION,
|
|
539
|
-
fields,
|
|
540
476
|
savedOn: new Date().toISOString()
|
|
541
477
|
});
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
478
|
+
model.tags = ensureTypeTag(model);
|
|
479
|
+
try {
|
|
480
|
+
await onModelBeforeUpdate.publish({
|
|
481
|
+
input: data,
|
|
482
|
+
original,
|
|
483
|
+
model
|
|
484
|
+
});
|
|
485
|
+
const resultModel = await storageOperations.models.update({
|
|
486
|
+
model
|
|
487
|
+
});
|
|
488
|
+
await updateManager(context, resultModel);
|
|
489
|
+
await onModelAfterUpdate.publish({
|
|
490
|
+
input: data,
|
|
491
|
+
original,
|
|
492
|
+
model: resultModel
|
|
493
|
+
});
|
|
494
|
+
return resultModel;
|
|
495
|
+
} catch (ex) {
|
|
496
|
+
await onModelUpdateError.publish({
|
|
497
|
+
input: data,
|
|
498
|
+
model,
|
|
499
|
+
original,
|
|
500
|
+
error: ex
|
|
501
|
+
});
|
|
502
|
+
throw ex;
|
|
503
|
+
}
|
|
557
504
|
},
|
|
558
|
-
|
|
559
505
|
async deleteModel(modelId) {
|
|
560
506
|
await checkModelPermissions("d");
|
|
561
507
|
const model = await getModel(modelId);
|
|
562
|
-
await onModelBeforeDelete.publish({
|
|
563
|
-
model
|
|
564
|
-
});
|
|
565
|
-
|
|
566
508
|
try {
|
|
567
|
-
await
|
|
509
|
+
await onModelBeforeDelete.publish({
|
|
510
|
+
model
|
|
511
|
+
});
|
|
512
|
+
try {
|
|
513
|
+
await storageOperations.models.delete({
|
|
514
|
+
model
|
|
515
|
+
});
|
|
516
|
+
} catch (ex) {
|
|
517
|
+
throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
|
|
518
|
+
error: ex,
|
|
519
|
+
modelId: model.modelId
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
await onModelAfterDelete.publish({
|
|
568
523
|
model
|
|
569
524
|
});
|
|
525
|
+
managers.delete(model.modelId);
|
|
570
526
|
} catch (ex) {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
527
|
+
await onModelDeleteError.publish({
|
|
528
|
+
model,
|
|
529
|
+
error: ex
|
|
574
530
|
});
|
|
531
|
+
throw ex;
|
|
575
532
|
}
|
|
576
|
-
|
|
577
|
-
await onModelAfterDelete.publish({
|
|
578
|
-
model
|
|
579
|
-
});
|
|
580
|
-
managers.delete(model.modelId);
|
|
581
533
|
},
|
|
582
|
-
|
|
583
|
-
async initializeModel(modelId) {
|
|
534
|
+
async initializeModel(modelId, data) {
|
|
584
535
|
/**
|
|
585
536
|
* We require that users have write permissions to initialize models.
|
|
586
537
|
* Maybe introduce another permission for it?
|
|
@@ -588,11 +539,11 @@ const createModelsCrud = params => {
|
|
|
588
539
|
await checkModelPermissions("w");
|
|
589
540
|
const model = await getModel(modelId);
|
|
590
541
|
await onModelInitialize.publish({
|
|
591
|
-
model
|
|
542
|
+
model,
|
|
543
|
+
data
|
|
592
544
|
});
|
|
593
545
|
return true;
|
|
594
546
|
},
|
|
595
|
-
|
|
596
547
|
getModelManager,
|
|
597
548
|
getEntryManager: async model => {
|
|
598
549
|
return getModelManager(model);
|
|
@@ -601,5 +552,4 @@ const createModelsCrud = params => {
|
|
|
601
552
|
getEntryManagers: () => managers
|
|
602
553
|
};
|
|
603
554
|
};
|
|
604
|
-
|
|
605
555
|
exports.createModelsCrud = createModelsCrud;
|