@webiny/api-headless-cms 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d65ec29d44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.d.ts +5 -2
- package/context.js +53 -19
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +0 -5
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +0 -3
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +0 -3
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +1 -40
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +12 -28
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +5 -61
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.js +1 -12
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentEntry.crud.js +72 -155
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.js +0 -2
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.js +0 -2
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.js +0 -2
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.js +0 -2
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +2 -3
- package/crud/contentModel/beforeCreate.js +7 -36
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +0 -10
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +2 -4
- package/crud/contentModel/beforeUpdate.js +2 -7
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +0 -3
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.d.ts +3 -4
- package/crud/contentModel/validateModel.js +6 -11
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +3 -4
- package/crud/contentModel/validateModelFields.js +84 -75
- 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 +63 -158
- 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 +21 -93
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +0 -12
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +2 -37
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +0 -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 +69 -97
- 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 +8 -12
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +39 -65
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +9 -22
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +21 -23
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +13 -24
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +0 -26
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +6 -16
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +0 -10
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +5 -10
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +6 -12
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +0 -8
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +63 -65
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +69 -85
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.js +3 -29
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
- package/graphqlFields/dynamicZone/index.js +0 -2
- package/graphqlFields/dynamicZone/index.js.map +1 -1
- 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.js +0 -12
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +0 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +1 -37
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +23 -53
- 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 +2 -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.js +0 -5
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.js +2 -38
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +0 -7
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.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 +0 -19
- package/storage/object.js.map +1 -1
- package/types.d.ts +56 -15
- package/types.js +22 -72
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +3 -26
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +0 -3
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +0 -13
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +9 -33
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +0 -26
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.js +4 -15
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/createTypeName.js +0 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +10 -26
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.js +0 -2
- package/utils/getBaseFieldType.js.map +1 -1
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +23 -19
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +8 -23
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +0 -6
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +0 -9
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +0 -13
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +0 -9
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +1 -10
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +19 -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.js +0 -4
- package/validators/dynamicZone.js.map +1 -1
- 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 +0 -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/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -77
- package/utils/filterModelFields.js.map +0 -1
|
@@ -1,59 +1,39 @@
|
|
|
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.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.STATUS_PUBLISHED = exports.STATUS_DRAFT = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _mdbid = _interopRequireDefault(require("mdbid"));
|
|
13
|
-
|
|
14
10
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
|
-
|
|
16
11
|
var _entryDataValidation = require("./contentEntry/entryDataValidation");
|
|
17
|
-
|
|
18
12
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
19
|
-
|
|
20
13
|
var _pubsub = require("@webiny/pubsub");
|
|
21
|
-
|
|
22
14
|
var _beforeCreate = require("./contentEntry/beforeCreate");
|
|
23
|
-
|
|
24
15
|
var _beforeUpdate = require("./contentEntry/beforeUpdate");
|
|
25
|
-
|
|
26
16
|
var _utils = require("@webiny/utils");
|
|
27
|
-
|
|
28
17
|
var _afterDelete = require("./contentEntry/afterDelete");
|
|
29
|
-
|
|
30
18
|
var _referenceFieldsMapping = require("./contentEntry/referenceFieldsMapping");
|
|
31
|
-
|
|
32
19
|
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
33
|
-
|
|
34
20
|
var _permissions = require("../utils/permissions");
|
|
35
|
-
|
|
36
21
|
var _access = require("../utils/access");
|
|
37
|
-
|
|
38
22
|
var _ownership = require("../utils/ownership");
|
|
39
|
-
|
|
40
23
|
var _entryStorage = require("../utils/entryStorage");
|
|
41
|
-
|
|
42
24
|
var _valueKeyStorageConverter = require("../utils/converters/valueKeyStorageConverter");
|
|
43
|
-
|
|
44
25
|
var _searchableFields = require("./contentEntry/searchableFields");
|
|
45
|
-
|
|
46
26
|
/**
|
|
47
27
|
* Package mdbid does not have types.
|
|
48
28
|
*/
|
|
49
29
|
// @ts-ignore
|
|
30
|
+
|
|
50
31
|
const STATUS_DRAFT = "draft";
|
|
51
32
|
exports.STATUS_DRAFT = STATUS_DRAFT;
|
|
52
33
|
const STATUS_PUBLISHED = "published";
|
|
53
34
|
exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
|
|
54
35
|
const STATUS_UNPUBLISHED = "unpublished";
|
|
55
36
|
exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
|
|
56
|
-
|
|
57
37
|
/**
|
|
58
38
|
* Used for some fields to convert their values.
|
|
59
39
|
*/
|
|
@@ -61,45 +41,35 @@ const convertDefaultValue = (field, value) => {
|
|
|
61
41
|
switch (field.type) {
|
|
62
42
|
case "boolean":
|
|
63
43
|
return Boolean(value);
|
|
64
|
-
|
|
65
44
|
case "number":
|
|
66
45
|
return Number(value);
|
|
67
|
-
|
|
68
46
|
default:
|
|
69
47
|
return value;
|
|
70
48
|
}
|
|
71
49
|
};
|
|
72
|
-
|
|
73
50
|
const getDefaultValue = field => {
|
|
74
51
|
const {
|
|
75
52
|
settings,
|
|
76
53
|
multipleValues
|
|
77
54
|
} = field;
|
|
78
|
-
|
|
79
55
|
if (settings && settings.defaultValue !== undefined) {
|
|
80
56
|
return convertDefaultValue(field, settings.defaultValue);
|
|
81
57
|
}
|
|
82
|
-
|
|
83
58
|
const {
|
|
84
59
|
predefinedValues
|
|
85
60
|
} = field;
|
|
86
|
-
|
|
87
61
|
if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
|
|
88
62
|
return undefined;
|
|
89
63
|
}
|
|
90
|
-
|
|
91
64
|
if (!multipleValues) {
|
|
92
65
|
const selectedValue = predefinedValues.values.find(value => {
|
|
93
66
|
return !!value.selected;
|
|
94
67
|
});
|
|
95
|
-
|
|
96
68
|
if (selectedValue) {
|
|
97
69
|
return convertDefaultValue(field, selectedValue.value);
|
|
98
70
|
}
|
|
99
|
-
|
|
100
71
|
return undefined;
|
|
101
72
|
}
|
|
102
|
-
|
|
103
73
|
return predefinedValues.values.filter(({
|
|
104
74
|
selected
|
|
105
75
|
}) => !!selected).map(({
|
|
@@ -111,8 +81,6 @@ const getDefaultValue = field => {
|
|
|
111
81
|
/**
|
|
112
82
|
* Cleans and adds default values to create input data.
|
|
113
83
|
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
84
|
const mapAndCleanCreateInputData = (model, input) => {
|
|
117
85
|
return model.fields.reduce((acc, field) => {
|
|
118
86
|
/**
|
|
@@ -124,12 +92,10 @@ const mapAndCleanCreateInputData = (model, input) => {
|
|
|
124
92
|
field
|
|
125
93
|
});
|
|
126
94
|
}
|
|
127
|
-
|
|
128
95
|
const value = input[field.fieldId];
|
|
129
96
|
/**
|
|
130
97
|
* We set the default value on create input if value is not defined.
|
|
131
98
|
*/
|
|
132
|
-
|
|
133
99
|
acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
|
|
134
100
|
return acc;
|
|
135
101
|
}, {});
|
|
@@ -137,8 +103,6 @@ const mapAndCleanCreateInputData = (model, input) => {
|
|
|
137
103
|
/**
|
|
138
104
|
* Cleans the update input entry data.
|
|
139
105
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
106
|
const mapAndCleanUpdatedInputData = (model, input) => {
|
|
143
107
|
return model.fields.reduce((acc, field) => {
|
|
144
108
|
/**
|
|
@@ -153,14 +117,10 @@ const mapAndCleanUpdatedInputData = (model, input) => {
|
|
|
153
117
|
/**
|
|
154
118
|
* We cannot set default value here because user might want to update only certain field values.
|
|
155
119
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
120
|
const value = input[field.fieldId];
|
|
159
|
-
|
|
160
121
|
if (value === undefined) {
|
|
161
122
|
return acc;
|
|
162
123
|
}
|
|
163
|
-
|
|
164
124
|
acc[field.fieldId] = value;
|
|
165
125
|
return acc;
|
|
166
126
|
}, {});
|
|
@@ -169,26 +129,29 @@ const mapAndCleanUpdatedInputData = (model, input) => {
|
|
|
169
129
|
* This method takes original entry meta and new input.
|
|
170
130
|
* When new meta is merged onto the existing one, everything that has undefined or null value is removed.
|
|
171
131
|
*/
|
|
172
|
-
|
|
173
|
-
|
|
174
132
|
const createEntryMeta = (input, original) => {
|
|
175
133
|
const meta = (0, _merge.default)(original || {}, input || {});
|
|
176
|
-
|
|
177
134
|
for (const key in meta) {
|
|
178
135
|
if (meta[key] !== undefined || meta[key] !== null) {
|
|
179
136
|
continue;
|
|
180
137
|
}
|
|
181
|
-
|
|
182
138
|
delete meta[key];
|
|
183
139
|
}
|
|
184
|
-
|
|
185
140
|
return meta;
|
|
186
141
|
};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
142
|
+
const createEntryId = input => {
|
|
143
|
+
let entryId = (0, _mdbid.default)();
|
|
144
|
+
if (input.id) {
|
|
145
|
+
if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\-]+)([a-zA-Z0-9])$/) === null) {
|
|
146
|
+
throw new _error.default("The provided ID is not valid. It must be a string which can A-Z, a-z, 0-9, - and it cannot start or end with a -.", "INVALID_ID", {
|
|
147
|
+
id: input.id
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
entryId = input.id;
|
|
151
|
+
}
|
|
152
|
+
const version = 1;
|
|
190
153
|
return {
|
|
191
|
-
entryId,
|
|
154
|
+
entryId: entryId,
|
|
192
155
|
version,
|
|
193
156
|
id: (0, _utils.createIdentifier)({
|
|
194
157
|
id: entryId,
|
|
@@ -196,19 +159,16 @@ const createEntryId = version => {
|
|
|
196
159
|
})
|
|
197
160
|
};
|
|
198
161
|
};
|
|
199
|
-
|
|
200
162
|
const increaseEntryIdVersion = id => {
|
|
201
163
|
const {
|
|
202
164
|
id: entryId,
|
|
203
165
|
version
|
|
204
166
|
} = (0, _utils.parseIdentifier)(id);
|
|
205
|
-
|
|
206
167
|
if (!version) {
|
|
207
168
|
throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
|
|
208
169
|
id
|
|
209
170
|
});
|
|
210
171
|
}
|
|
211
|
-
|
|
212
172
|
return {
|
|
213
173
|
entryId,
|
|
214
174
|
version: version + 1,
|
|
@@ -218,13 +178,10 @@ const increaseEntryIdVersion = id => {
|
|
|
218
178
|
})
|
|
219
179
|
};
|
|
220
180
|
};
|
|
221
|
-
|
|
222
181
|
const allowedEntryStatus = ["draft", "published", "unpublished"];
|
|
223
|
-
|
|
224
182
|
const transformEntryStatus = status => {
|
|
225
183
|
return allowedEntryStatus.includes(status) ? status : "draft";
|
|
226
184
|
};
|
|
227
|
-
|
|
228
185
|
const createContentEntryCrud = params => {
|
|
229
186
|
const {
|
|
230
187
|
storageOperations,
|
|
@@ -235,60 +192,70 @@ const createContentEntryCrud = params => {
|
|
|
235
192
|
const {
|
|
236
193
|
plugins
|
|
237
194
|
} = context;
|
|
195
|
+
|
|
238
196
|
/**
|
|
239
197
|
* Create
|
|
240
198
|
*/
|
|
241
|
-
|
|
242
199
|
const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
|
|
243
200
|
const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
|
|
244
201
|
const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
|
|
202
|
+
|
|
245
203
|
/**
|
|
246
204
|
* Create new revision
|
|
247
205
|
*/
|
|
248
|
-
|
|
249
206
|
const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
|
|
250
207
|
const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
|
|
251
208
|
const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
|
|
209
|
+
|
|
252
210
|
/**
|
|
253
211
|
* Update
|
|
254
212
|
*/
|
|
255
|
-
|
|
256
213
|
const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
|
|
257
214
|
const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
|
|
258
215
|
const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
|
|
216
|
+
|
|
259
217
|
/**
|
|
260
218
|
* Publish
|
|
261
219
|
*/
|
|
262
|
-
|
|
263
220
|
const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
|
|
264
|
-
const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.
|
|
221
|
+
const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublish");
|
|
265
222
|
const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
|
|
223
|
+
|
|
266
224
|
/**
|
|
267
|
-
*
|
|
225
|
+
* Republish
|
|
268
226
|
*/
|
|
227
|
+
const onEntryBeforeRepublish = (0, _pubsub.createTopic)("cms.onEntryBeforeRepublish");
|
|
228
|
+
const onEntryAfterRepublish = (0, _pubsub.createTopic)("cms.onEntryAfterRepublish");
|
|
229
|
+
const onEntryRepublishError = (0, _pubsub.createTopic)("cms.onEntryRepublishError");
|
|
269
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Unpublish
|
|
233
|
+
*/
|
|
270
234
|
const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
|
|
271
235
|
const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
|
|
272
236
|
const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
|
|
237
|
+
|
|
273
238
|
/**
|
|
274
239
|
* Delete
|
|
275
240
|
*/
|
|
276
|
-
|
|
277
241
|
const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
|
|
278
242
|
const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
|
|
279
|
-
const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
|
|
243
|
+
const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
|
|
280
244
|
|
|
245
|
+
// delete revision
|
|
281
246
|
const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
|
|
282
247
|
const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
|
|
283
|
-
const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
|
|
248
|
+
const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
|
|
284
249
|
|
|
285
|
-
|
|
250
|
+
// get
|
|
251
|
+
const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet");
|
|
286
252
|
|
|
253
|
+
// list
|
|
287
254
|
const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
|
|
255
|
+
|
|
288
256
|
/**
|
|
289
257
|
* We need to assign some default behaviors.
|
|
290
258
|
*/
|
|
291
|
-
|
|
292
259
|
(0, _beforeCreate.assignBeforeEntryCreate)({
|
|
293
260
|
context,
|
|
294
261
|
onEntryBeforeCreate
|
|
@@ -301,21 +268,18 @@ const createContentEntryCrud = params => {
|
|
|
301
268
|
context,
|
|
302
269
|
onEntryAfterDelete
|
|
303
270
|
});
|
|
304
|
-
|
|
305
271
|
const checkEntryPermissions = check => {
|
|
306
272
|
return (0, _permissions.checkPermissions)(context, "cms.contentEntry", check);
|
|
307
273
|
};
|
|
274
|
+
|
|
308
275
|
/**
|
|
309
276
|
* A helper to delete the entire entry.
|
|
310
277
|
*/
|
|
311
|
-
|
|
312
|
-
|
|
313
278
|
const deleteEntry = async params => {
|
|
314
279
|
const {
|
|
315
280
|
model,
|
|
316
281
|
entry
|
|
317
282
|
} = params;
|
|
318
|
-
|
|
319
283
|
try {
|
|
320
284
|
await onEntryBeforeDelete.publish({
|
|
321
285
|
entry,
|
|
@@ -342,8 +306,6 @@ const createContentEntryCrud = params => {
|
|
|
342
306
|
/**
|
|
343
307
|
* A helper to get entries by revision IDs
|
|
344
308
|
*/
|
|
345
|
-
|
|
346
|
-
|
|
347
309
|
const getEntriesByIds = async (initialModel, ids) => {
|
|
348
310
|
const permission = await checkEntryPermissions({
|
|
349
311
|
rwd: "r"
|
|
@@ -358,7 +320,6 @@ const createContentEntryCrud = params => {
|
|
|
358
320
|
});
|
|
359
321
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
360
322
|
};
|
|
361
|
-
|
|
362
323
|
return {
|
|
363
324
|
/**
|
|
364
325
|
* Deprecated - will be removed in 5.35.0
|
|
@@ -379,7 +340,6 @@ const createContentEntryCrud = params => {
|
|
|
379
340
|
onAfterEntryUnpublish: onEntryAfterUnpublish,
|
|
380
341
|
onBeforeEntryGet: onEntryBeforeGet,
|
|
381
342
|
onBeforeEntryList: onEntryBeforeList,
|
|
382
|
-
|
|
383
343
|
/**
|
|
384
344
|
* Released in 5.34.0
|
|
385
345
|
*
|
|
@@ -388,42 +348,42 @@ const createContentEntryCrud = params => {
|
|
|
388
348
|
onEntryBeforeCreate,
|
|
389
349
|
onEntryAfterCreate,
|
|
390
350
|
onEntryCreateError,
|
|
391
|
-
|
|
392
351
|
/**
|
|
393
352
|
* Create revision
|
|
394
353
|
*/
|
|
395
354
|
onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
|
|
396
355
|
onEntryRevisionAfterCreate,
|
|
397
356
|
onEntryRevisionCreateError: onEntryCreateRevisionError,
|
|
398
|
-
|
|
399
357
|
/**
|
|
400
358
|
* Update
|
|
401
359
|
*/
|
|
402
360
|
onEntryBeforeUpdate,
|
|
403
361
|
onEntryAfterUpdate,
|
|
404
362
|
onEntryUpdateError,
|
|
405
|
-
|
|
406
363
|
/**
|
|
407
364
|
* Delete whole entry
|
|
408
365
|
*/
|
|
409
366
|
onEntryBeforeDelete,
|
|
410
367
|
onEntryAfterDelete,
|
|
411
368
|
onEntryDeleteError,
|
|
412
|
-
|
|
413
369
|
/**
|
|
414
370
|
* Delete entry revision
|
|
415
371
|
*/
|
|
416
372
|
onEntryRevisionBeforeDelete,
|
|
417
373
|
onEntryRevisionAfterDelete,
|
|
418
374
|
onEntryRevisionDeleteError,
|
|
419
|
-
|
|
420
375
|
/**
|
|
421
376
|
* Publish
|
|
422
377
|
*/
|
|
423
378
|
onEntryBeforePublish,
|
|
424
379
|
onEntryAfterPublish,
|
|
425
380
|
onEntryPublishError,
|
|
426
|
-
|
|
381
|
+
/**
|
|
382
|
+
* Republish
|
|
383
|
+
*/
|
|
384
|
+
onEntryBeforeRepublish,
|
|
385
|
+
onEntryAfterRepublish,
|
|
386
|
+
onEntryRepublishError,
|
|
427
387
|
/**
|
|
428
388
|
* Unpublish
|
|
429
389
|
*/
|
|
@@ -432,12 +392,10 @@ const createContentEntryCrud = params => {
|
|
|
432
392
|
onEntryUnpublishError,
|
|
433
393
|
onEntryBeforeGet,
|
|
434
394
|
onEntryBeforeList,
|
|
435
|
-
|
|
436
395
|
/**
|
|
437
396
|
* Get entries by exact revision IDs from the database.
|
|
438
397
|
*/
|
|
439
398
|
getEntriesByIds: getEntriesByIds,
|
|
440
|
-
|
|
441
399
|
/**
|
|
442
400
|
* Get a single entry by revision ID from the database.
|
|
443
401
|
*/
|
|
@@ -454,14 +412,11 @@ const createContentEntryCrud = params => {
|
|
|
454
412
|
model
|
|
455
413
|
});
|
|
456
414
|
const [entry] = await getEntriesByIds(model, [id]);
|
|
457
|
-
|
|
458
415
|
if (!entry) {
|
|
459
416
|
throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
|
|
460
417
|
}
|
|
461
|
-
|
|
462
418
|
return entry;
|
|
463
419
|
},
|
|
464
|
-
|
|
465
420
|
/**
|
|
466
421
|
* Get published revisions by entry IDs.
|
|
467
422
|
*/
|
|
@@ -479,7 +434,6 @@ const createContentEntryCrud = params => {
|
|
|
479
434
|
});
|
|
480
435
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
481
436
|
},
|
|
482
|
-
|
|
483
437
|
/**
|
|
484
438
|
* Get the latest revisions by entry IDs.
|
|
485
439
|
*/
|
|
@@ -497,7 +451,6 @@ const createContentEntryCrud = params => {
|
|
|
497
451
|
});
|
|
498
452
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
499
453
|
},
|
|
500
|
-
|
|
501
454
|
async getEntryRevisions(initialModel, entryId) {
|
|
502
455
|
const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
|
|
503
456
|
model: initialModel,
|
|
@@ -507,7 +460,6 @@ const createContentEntryCrud = params => {
|
|
|
507
460
|
id: entryId
|
|
508
461
|
});
|
|
509
462
|
},
|
|
510
|
-
|
|
511
463
|
/**
|
|
512
464
|
* TODO determine if this method is required at all.
|
|
513
465
|
*
|
|
@@ -534,14 +486,11 @@ const createContentEntryCrud = params => {
|
|
|
534
486
|
sort,
|
|
535
487
|
limit: 1
|
|
536
488
|
});
|
|
537
|
-
|
|
538
489
|
if (items.length === 0) {
|
|
539
490
|
throw new _handlerGraphql.NotFoundError(`Entry not found!`);
|
|
540
491
|
}
|
|
541
|
-
|
|
542
492
|
return items[0];
|
|
543
493
|
},
|
|
544
|
-
|
|
545
494
|
/**
|
|
546
495
|
* @description Should not be used directly. Internal use only!
|
|
547
496
|
*
|
|
@@ -557,20 +506,19 @@ const createContentEntryCrud = params => {
|
|
|
557
506
|
plugins
|
|
558
507
|
});
|
|
559
508
|
const {
|
|
560
|
-
where: initialWhere
|
|
509
|
+
where: initialWhere,
|
|
510
|
+
limit: initialLimit
|
|
561
511
|
} = params;
|
|
512
|
+
const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
|
|
562
513
|
/**
|
|
563
514
|
* We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
|
|
564
515
|
*/
|
|
565
|
-
|
|
566
516
|
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
567
517
|
/**
|
|
568
518
|
* Possibly only get records which are owned by current user.
|
|
569
519
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
570
520
|
*/
|
|
571
|
-
|
|
572
521
|
const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
|
|
573
|
-
|
|
574
522
|
if (ownedBy !== undefined) {
|
|
575
523
|
where.ownedBy = ownedBy;
|
|
576
524
|
}
|
|
@@ -578,8 +526,6 @@ const createContentEntryCrud = params => {
|
|
|
578
526
|
* Where must contain either latest or published keys.
|
|
579
527
|
* We cannot list entries without one of those
|
|
580
528
|
*/
|
|
581
|
-
|
|
582
|
-
|
|
583
529
|
if (where.latest && where.published) {
|
|
584
530
|
throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
|
|
585
531
|
where
|
|
@@ -589,13 +535,11 @@ const createContentEntryCrud = params => {
|
|
|
589
535
|
where
|
|
590
536
|
});
|
|
591
537
|
}
|
|
592
|
-
|
|
593
538
|
const fields = (0, _searchableFields.getSearchableFields)({
|
|
594
539
|
fields: model.fields,
|
|
595
540
|
plugins: context.plugins,
|
|
596
541
|
input: params.fields || []
|
|
597
542
|
});
|
|
598
|
-
|
|
599
543
|
try {
|
|
600
544
|
await onEntryBeforeList.publish({
|
|
601
545
|
where,
|
|
@@ -607,13 +551,13 @@ const createContentEntryCrud = params => {
|
|
|
607
551
|
cursor,
|
|
608
552
|
items
|
|
609
553
|
} = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
554
|
+
limit,
|
|
610
555
|
where,
|
|
611
556
|
fields
|
|
612
557
|
}));
|
|
613
558
|
const meta = {
|
|
614
559
|
hasMoreItems,
|
|
615
560
|
totalCount,
|
|
616
|
-
|
|
617
561
|
/**
|
|
618
562
|
* Cursor should be null if there are no more items to load.
|
|
619
563
|
* Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
|
|
@@ -634,7 +578,6 @@ const createContentEntryCrud = params => {
|
|
|
634
578
|
});
|
|
635
579
|
}
|
|
636
580
|
},
|
|
637
|
-
|
|
638
581
|
async listLatestEntries(model, params) {
|
|
639
582
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
640
583
|
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
@@ -645,7 +588,6 @@ const createContentEntryCrud = params => {
|
|
|
645
588
|
})
|
|
646
589
|
}));
|
|
647
590
|
},
|
|
648
|
-
|
|
649
591
|
async listPublishedEntries(model, params) {
|
|
650
592
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
651
593
|
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
@@ -656,7 +598,6 @@ const createContentEntryCrud = params => {
|
|
|
656
598
|
})
|
|
657
599
|
}));
|
|
658
600
|
},
|
|
659
|
-
|
|
660
601
|
async createEntry(initialModel, inputData) {
|
|
661
602
|
await checkEntryPermissions({
|
|
662
603
|
rwd: "w"
|
|
@@ -666,10 +607,10 @@ const createContentEntryCrud = params => {
|
|
|
666
607
|
model: initialModel,
|
|
667
608
|
plugins
|
|
668
609
|
});
|
|
610
|
+
|
|
669
611
|
/**
|
|
670
612
|
* Make sure we only work with fields that are defined in the model.
|
|
671
613
|
*/
|
|
672
|
-
|
|
673
614
|
const initialInput = mapAndCleanCreateInputData(model, inputData);
|
|
674
615
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
675
616
|
context,
|
|
@@ -689,11 +630,15 @@ const createContentEntryCrud = params => {
|
|
|
689
630
|
displayName: identity.displayName,
|
|
690
631
|
type: identity.type
|
|
691
632
|
};
|
|
633
|
+
/**
|
|
634
|
+
* There is a possibility that user sends an ID in the input, so we will use that one.
|
|
635
|
+
* There is no check if the ID is unique or not, that is up to the user.
|
|
636
|
+
*/
|
|
692
637
|
const {
|
|
693
638
|
id,
|
|
694
639
|
entryId,
|
|
695
640
|
version
|
|
696
|
-
} = createEntryId(
|
|
641
|
+
} = createEntryId(inputData);
|
|
697
642
|
const entry = {
|
|
698
643
|
webinyVersion: context.WEBINY_VERSION,
|
|
699
644
|
tenant: getTenant().id,
|
|
@@ -711,7 +656,6 @@ const createContentEntryCrud = params => {
|
|
|
711
656
|
values: input
|
|
712
657
|
};
|
|
713
658
|
let storageEntry = null;
|
|
714
|
-
|
|
715
659
|
try {
|
|
716
660
|
await onEntryBeforeCreate.publish({
|
|
717
661
|
entry,
|
|
@@ -745,7 +689,6 @@ const createContentEntryCrud = params => {
|
|
|
745
689
|
});
|
|
746
690
|
}
|
|
747
691
|
},
|
|
748
|
-
|
|
749
692
|
async createEntryRevisionFrom(initialModel, sourceId, inputData) {
|
|
750
693
|
const permission = await checkEntryPermissions({
|
|
751
694
|
rwd: "w"
|
|
@@ -755,15 +698,15 @@ const createContentEntryCrud = params => {
|
|
|
755
698
|
model: initialModel,
|
|
756
699
|
plugins
|
|
757
700
|
});
|
|
701
|
+
|
|
758
702
|
/**
|
|
759
703
|
* Make sure we only work with fields that are defined in the model.
|
|
760
704
|
*/
|
|
761
|
-
|
|
762
705
|
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
706
|
+
|
|
763
707
|
/**
|
|
764
708
|
* Entries are identified by a common parent ID + Revision number.
|
|
765
709
|
*/
|
|
766
|
-
|
|
767
710
|
const {
|
|
768
711
|
id: uniqueId
|
|
769
712
|
} = (0, _utils.parseIdentifier)(sourceId);
|
|
@@ -773,15 +716,13 @@ const createContentEntryCrud = params => {
|
|
|
773
716
|
const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
774
717
|
id: uniqueId
|
|
775
718
|
});
|
|
776
|
-
|
|
777
719
|
if (!originalStorageEntry) {
|
|
778
720
|
throw new _handlerGraphql.NotFoundError(`Entry "${sourceId}" of model "${model.modelId}" was not found.`);
|
|
779
721
|
}
|
|
722
|
+
|
|
780
723
|
/**
|
|
781
724
|
* We need to convert data from DB to its original form before using it further.
|
|
782
725
|
*/
|
|
783
|
-
|
|
784
|
-
|
|
785
726
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
786
727
|
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
787
728
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
@@ -819,7 +760,6 @@ const createContentEntryCrud = params => {
|
|
|
819
760
|
values
|
|
820
761
|
});
|
|
821
762
|
let storageEntry = null;
|
|
822
|
-
|
|
823
763
|
try {
|
|
824
764
|
await onEntryBeforeCreateRevision.publish({
|
|
825
765
|
input,
|
|
@@ -857,7 +797,6 @@ const createContentEntryCrud = params => {
|
|
|
857
797
|
});
|
|
858
798
|
}
|
|
859
799
|
},
|
|
860
|
-
|
|
861
800
|
async updateEntry(initialModel, id, inputData, metaInput) {
|
|
862
801
|
const permission = await checkEntryPermissions({
|
|
863
802
|
rwd: "w"
|
|
@@ -867,27 +806,24 @@ const createContentEntryCrud = params => {
|
|
|
867
806
|
model: initialModel,
|
|
868
807
|
plugins
|
|
869
808
|
});
|
|
809
|
+
|
|
870
810
|
/**
|
|
871
811
|
* Make sure we only work with fields that are defined in the model.
|
|
872
812
|
*/
|
|
873
|
-
|
|
874
813
|
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
814
|
+
|
|
875
815
|
/**
|
|
876
816
|
* The entry we are going to update.
|
|
877
817
|
*/
|
|
878
|
-
|
|
879
818
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
880
819
|
id
|
|
881
820
|
});
|
|
882
|
-
|
|
883
821
|
if (!originalStorageEntry) {
|
|
884
822
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
885
823
|
}
|
|
886
|
-
|
|
887
824
|
if (originalStorageEntry.locked) {
|
|
888
825
|
throw new _error.default(`Cannot update entry because it's locked.`, "CONTENT_ENTRY_UPDATE_ERROR");
|
|
889
826
|
}
|
|
890
|
-
|
|
891
827
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
892
828
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
893
829
|
context,
|
|
@@ -906,12 +842,10 @@ const createContentEntryCrud = params => {
|
|
|
906
842
|
/**
|
|
907
843
|
* If users wants to remove a key from meta values, they need to send meta key with the null value.
|
|
908
844
|
*/
|
|
909
|
-
|
|
910
845
|
const meta = createEntryMeta(metaInput, originalEntry.meta);
|
|
911
846
|
/**
|
|
912
847
|
* We always send the full entry to the hooks and storage operations update.
|
|
913
848
|
*/
|
|
914
|
-
|
|
915
849
|
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
916
850
|
savedOn: new Date().toISOString(),
|
|
917
851
|
values,
|
|
@@ -919,7 +853,6 @@ const createContentEntryCrud = params => {
|
|
|
919
853
|
status: transformEntryStatus(originalEntry.status)
|
|
920
854
|
});
|
|
921
855
|
let storageEntry = null;
|
|
922
|
-
|
|
923
856
|
try {
|
|
924
857
|
await onEntryBeforeUpdate.publish({
|
|
925
858
|
entry,
|
|
@@ -956,7 +889,6 @@ const createContentEntryCrud = params => {
|
|
|
956
889
|
});
|
|
957
890
|
}
|
|
958
891
|
},
|
|
959
|
-
|
|
960
892
|
/**
|
|
961
893
|
* Method used internally. Not documented and should not be used in users systems.
|
|
962
894
|
* @internal
|
|
@@ -973,27 +905,22 @@ const createContentEntryCrud = params => {
|
|
|
973
905
|
/**
|
|
974
906
|
* Fetch the entry from the storage.
|
|
975
907
|
*/
|
|
976
|
-
|
|
977
908
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
978
909
|
id
|
|
979
910
|
});
|
|
980
|
-
|
|
981
911
|
if (!originalStorageEntry) {
|
|
982
912
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
|
|
983
913
|
}
|
|
984
|
-
|
|
985
914
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
986
915
|
/**
|
|
987
916
|
* We can only process published entries.
|
|
988
917
|
*/
|
|
989
|
-
|
|
990
918
|
if (originalEntry.status !== "published") {
|
|
991
919
|
throw new _error.default("Entry with given ID is not published!", "NOT_PUBLISHED_ERROR", {
|
|
992
920
|
id,
|
|
993
921
|
original: originalEntry
|
|
994
922
|
});
|
|
995
923
|
}
|
|
996
|
-
|
|
997
924
|
const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
|
|
998
925
|
context,
|
|
999
926
|
model,
|
|
@@ -1009,7 +936,6 @@ const createContentEntryCrud = params => {
|
|
|
1009
936
|
/**
|
|
1010
937
|
* First we need to update existing entry.
|
|
1011
938
|
*/
|
|
1012
|
-
|
|
1013
939
|
try {
|
|
1014
940
|
await storageOperations.entries.update(model, {
|
|
1015
941
|
entry,
|
|
@@ -1023,20 +949,32 @@ const createContentEntryCrud = params => {
|
|
|
1023
949
|
/**
|
|
1024
950
|
* Then we move onto publishing it again.
|
|
1025
951
|
*/
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
952
|
try {
|
|
1029
|
-
|
|
953
|
+
await onEntryBeforeRepublish.publish({
|
|
954
|
+
entry,
|
|
955
|
+
model
|
|
956
|
+
});
|
|
957
|
+
const result = await storageOperations.entries.publish(model, {
|
|
1030
958
|
entry,
|
|
1031
959
|
storageEntry
|
|
1032
960
|
});
|
|
961
|
+
await onEntryAfterRepublish.publish({
|
|
962
|
+
entry,
|
|
963
|
+
model,
|
|
964
|
+
storageEntry
|
|
965
|
+
});
|
|
966
|
+
return result;
|
|
1033
967
|
} catch (ex) {
|
|
968
|
+
await onEntryRepublishError.publish({
|
|
969
|
+
entry,
|
|
970
|
+
model,
|
|
971
|
+
error: ex
|
|
972
|
+
});
|
|
1034
973
|
throw new _error.default("Could not publish existing entry while re-publishing.", "REPUBLISH_PUBLISH_ERROR", {
|
|
1035
974
|
entry
|
|
1036
975
|
});
|
|
1037
976
|
}
|
|
1038
977
|
},
|
|
1039
|
-
|
|
1040
978
|
async deleteEntryRevision(initialModel, revisionId) {
|
|
1041
979
|
const permission = await checkEntryPermissions({
|
|
1042
980
|
rwd: "d"
|
|
@@ -1060,11 +998,9 @@ const createContentEntryCrud = params => {
|
|
|
1060
998
|
entryId,
|
|
1061
999
|
version: version
|
|
1062
1000
|
});
|
|
1063
|
-
|
|
1064
1001
|
if (!storageEntryToDelete) {
|
|
1065
1002
|
throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
|
|
1066
1003
|
}
|
|
1067
|
-
|
|
1068
1004
|
(0, _ownership.checkOwnership)(context, permission, storageEntryToDelete);
|
|
1069
1005
|
const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
|
|
1070
1006
|
const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
|
|
@@ -1072,7 +1008,6 @@ const createContentEntryCrud = params => {
|
|
|
1072
1008
|
* If targeted record is the latest entry record and there is no previous one, we need to run full delete with hooks.
|
|
1073
1009
|
* At this point deleteRevision hooks are not fired.
|
|
1074
1010
|
*/
|
|
1075
|
-
|
|
1076
1011
|
if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
|
|
1077
1012
|
return await deleteEntry({
|
|
1078
1013
|
model,
|
|
@@ -1082,16 +1017,12 @@ const createContentEntryCrud = params => {
|
|
|
1082
1017
|
/**
|
|
1083
1018
|
* If targeted record is latest entry revision, set the previous one as the new latest
|
|
1084
1019
|
*/
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
1020
|
let entryToSetAsLatest = null;
|
|
1088
1021
|
let storageEntryToSetAsLatest = null;
|
|
1089
|
-
|
|
1090
1022
|
if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {
|
|
1091
1023
|
entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, previousStorageEntry);
|
|
1092
1024
|
storageEntryToSetAsLatest = previousStorageEntry;
|
|
1093
1025
|
}
|
|
1094
|
-
|
|
1095
1026
|
try {
|
|
1096
1027
|
await onEntryRevisionBeforeDelete.publish({
|
|
1097
1028
|
entry: entryToDelete,
|
|
@@ -1122,7 +1053,6 @@ const createContentEntryCrud = params => {
|
|
|
1122
1053
|
});
|
|
1123
1054
|
}
|
|
1124
1055
|
},
|
|
1125
|
-
|
|
1126
1056
|
async deleteEntry(initialModel, entryId) {
|
|
1127
1057
|
const permission = await checkEntryPermissions({
|
|
1128
1058
|
rwd: "d"
|
|
@@ -1135,11 +1065,9 @@ const createContentEntryCrud = params => {
|
|
|
1135
1065
|
const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
1136
1066
|
id: entryId
|
|
1137
1067
|
});
|
|
1138
|
-
|
|
1139
1068
|
if (!storageEntry) {
|
|
1140
1069
|
throw new _handlerGraphql.NotFoundError(`Entry "${entryId}" was not found!`);
|
|
1141
1070
|
}
|
|
1142
|
-
|
|
1143
1071
|
(0, _ownership.checkOwnership)(context, permission, storageEntry);
|
|
1144
1072
|
const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
|
|
1145
1073
|
return await deleteEntry({
|
|
@@ -1147,7 +1075,6 @@ const createContentEntryCrud = params => {
|
|
|
1147
1075
|
entry
|
|
1148
1076
|
});
|
|
1149
1077
|
},
|
|
1150
|
-
|
|
1151
1078
|
async publishEntry(initialModel, id) {
|
|
1152
1079
|
const permission = await checkEntryPermissions({
|
|
1153
1080
|
pw: "p"
|
|
@@ -1160,11 +1087,9 @@ const createContentEntryCrud = params => {
|
|
|
1160
1087
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
1161
1088
|
id
|
|
1162
1089
|
});
|
|
1163
|
-
|
|
1164
1090
|
if (!originalStorageEntry) {
|
|
1165
1091
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
|
|
1166
1092
|
}
|
|
1167
|
-
|
|
1168
1093
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1169
1094
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1170
1095
|
const currentDate = new Date().toISOString();
|
|
@@ -1175,7 +1100,6 @@ const createContentEntryCrud = params => {
|
|
|
1175
1100
|
publishedOn: currentDate
|
|
1176
1101
|
});
|
|
1177
1102
|
let storageEntry = null;
|
|
1178
|
-
|
|
1179
1103
|
try {
|
|
1180
1104
|
await onEntryBeforePublish.publish({
|
|
1181
1105
|
entry,
|
|
@@ -1207,7 +1131,6 @@ const createContentEntryCrud = params => {
|
|
|
1207
1131
|
});
|
|
1208
1132
|
}
|
|
1209
1133
|
},
|
|
1210
|
-
|
|
1211
1134
|
async unpublishEntry(initialModel, id) {
|
|
1212
1135
|
const permission = await checkEntryPermissions({
|
|
1213
1136
|
pw: "u"
|
|
@@ -1222,24 +1145,20 @@ const createContentEntryCrud = params => {
|
|
|
1222
1145
|
const originalStorageEntry = await storageOperations.entries.getPublishedRevisionByEntryId(model, {
|
|
1223
1146
|
id: entryId
|
|
1224
1147
|
});
|
|
1225
|
-
|
|
1226
1148
|
if (!originalStorageEntry) {
|
|
1227
1149
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
1228
1150
|
}
|
|
1229
|
-
|
|
1230
1151
|
if (originalStorageEntry.id !== id) {
|
|
1231
1152
|
throw new _error.default(`Entry is not published.`, "UNPUBLISH_ERROR", {
|
|
1232
1153
|
entry: originalStorageEntry
|
|
1233
1154
|
});
|
|
1234
1155
|
}
|
|
1235
|
-
|
|
1236
1156
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1237
1157
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1238
1158
|
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1239
1159
|
status: STATUS_UNPUBLISHED
|
|
1240
1160
|
});
|
|
1241
1161
|
let storageEntry = null;
|
|
1242
|
-
|
|
1243
1162
|
try {
|
|
1244
1163
|
await onEntryBeforeUnpublish.publish({
|
|
1245
1164
|
entry,
|
|
@@ -1270,8 +1189,6 @@ const createContentEntryCrud = params => {
|
|
|
1270
1189
|
});
|
|
1271
1190
|
}
|
|
1272
1191
|
}
|
|
1273
|
-
|
|
1274
1192
|
};
|
|
1275
1193
|
};
|
|
1276
|
-
|
|
1277
1194
|
exports.createContentEntryCrud = createContentEntryCrud;
|