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