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