@webiny/api-headless-cms 0.0.0-unstable.1e66d121db → 0.0.0-unstable.611c5af35e
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.js +0 -15
- 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 +2 -25
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +5 -59
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry.crud.js +27 -145
- 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.js +4 -32
- 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.js +0 -5
- 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/createFieldModels.js +0 -6
- package/crud/contentModel/createFieldModels.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +0 -2
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/fieldIdValidation.js +0 -5
- package/crud/contentModel/fieldIdValidation.js.map +1 -1
- package/crud/contentModel/idValidation.js +0 -5
- package/crud/contentModel/idValidation.js.map +1 -1
- package/crud/contentModel/models.js +1 -8
- 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.js +0 -8
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +8 -60
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +25 -95
- 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.crud.js +10 -47
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +0 -16
- package/crud/index.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/CmsModelObjectFieldConverterPlugin.js +0 -53
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +0 -4
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.js +5 -9
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +3 -28
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.js +1 -8
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +3 -11
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +2 -42
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +2 -19
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +20 -17
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +3 -21
- 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.js +1 -14
- 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 +0 -10
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +0 -10
- 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.js +5 -19
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +1 -14
- 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/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 -11
- 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 +6 -36
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +17 -51
- 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.js +0 -19
- 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 +24 -25
- 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/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.js +0 -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 -18
- package/storage/object.js.map +1 -1
- package/types.d.ts +14 -3
- package/types.js +0 -62
- 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.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +27 -24
- 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/createTypeName.js +0 -8
- 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/filterModelFields.js +3 -9
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.js +2 -6
- 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 -8
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +0 -11
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +0 -8
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +1 -9
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +0 -7
- 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/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 -15
- 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
|
@@ -1,57 +1,38 @@
|
|
|
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
|
/**
|
|
45
26
|
* Package mdbid does not have types.
|
|
46
27
|
*/
|
|
47
28
|
// @ts-ignore
|
|
29
|
+
|
|
48
30
|
const STATUS_DRAFT = "draft";
|
|
49
31
|
exports.STATUS_DRAFT = STATUS_DRAFT;
|
|
50
32
|
const STATUS_PUBLISHED = "published";
|
|
51
33
|
exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
|
|
52
34
|
const STATUS_UNPUBLISHED = "unpublished";
|
|
53
35
|
exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
|
|
54
|
-
|
|
55
36
|
/**
|
|
56
37
|
* Used for some fields to convert their values.
|
|
57
38
|
*/
|
|
@@ -59,45 +40,35 @@ const convertDefaultValue = (field, value) => {
|
|
|
59
40
|
switch (field.type) {
|
|
60
41
|
case "boolean":
|
|
61
42
|
return Boolean(value);
|
|
62
|
-
|
|
63
43
|
case "number":
|
|
64
44
|
return Number(value);
|
|
65
|
-
|
|
66
45
|
default:
|
|
67
46
|
return value;
|
|
68
47
|
}
|
|
69
48
|
};
|
|
70
|
-
|
|
71
49
|
const getDefaultValue = field => {
|
|
72
50
|
const {
|
|
73
51
|
settings,
|
|
74
52
|
multipleValues
|
|
75
53
|
} = field;
|
|
76
|
-
|
|
77
54
|
if (settings && settings.defaultValue !== undefined) {
|
|
78
55
|
return convertDefaultValue(field, settings.defaultValue);
|
|
79
56
|
}
|
|
80
|
-
|
|
81
57
|
const {
|
|
82
58
|
predefinedValues
|
|
83
59
|
} = field;
|
|
84
|
-
|
|
85
60
|
if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
|
|
86
61
|
return undefined;
|
|
87
62
|
}
|
|
88
|
-
|
|
89
63
|
if (!multipleValues) {
|
|
90
64
|
const selectedValue = predefinedValues.values.find(value => {
|
|
91
65
|
return !!value.selected;
|
|
92
66
|
});
|
|
93
|
-
|
|
94
67
|
if (selectedValue) {
|
|
95
68
|
return convertDefaultValue(field, selectedValue.value);
|
|
96
69
|
}
|
|
97
|
-
|
|
98
70
|
return undefined;
|
|
99
71
|
}
|
|
100
|
-
|
|
101
72
|
return predefinedValues.values.filter(({
|
|
102
73
|
selected
|
|
103
74
|
}) => !!selected).map(({
|
|
@@ -109,8 +80,6 @@ const getDefaultValue = field => {
|
|
|
109
80
|
/**
|
|
110
81
|
* Cleans and adds default values to create input data.
|
|
111
82
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
83
|
const mapAndCleanCreateInputData = (model, input) => {
|
|
115
84
|
return model.fields.reduce((acc, field) => {
|
|
116
85
|
/**
|
|
@@ -122,12 +91,10 @@ const mapAndCleanCreateInputData = (model, input) => {
|
|
|
122
91
|
field
|
|
123
92
|
});
|
|
124
93
|
}
|
|
125
|
-
|
|
126
94
|
const value = input[field.fieldId];
|
|
127
95
|
/**
|
|
128
96
|
* We set the default value on create input if value is not defined.
|
|
129
97
|
*/
|
|
130
|
-
|
|
131
98
|
acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
|
|
132
99
|
return acc;
|
|
133
100
|
}, {});
|
|
@@ -135,8 +102,6 @@ const mapAndCleanCreateInputData = (model, input) => {
|
|
|
135
102
|
/**
|
|
136
103
|
* Cleans the update input entry data.
|
|
137
104
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
105
|
const mapAndCleanUpdatedInputData = (model, input) => {
|
|
141
106
|
return model.fields.reduce((acc, field) => {
|
|
142
107
|
/**
|
|
@@ -151,14 +116,10 @@ const mapAndCleanUpdatedInputData = (model, input) => {
|
|
|
151
116
|
/**
|
|
152
117
|
* We cannot set default value here because user might want to update only certain field values.
|
|
153
118
|
*/
|
|
154
|
-
|
|
155
|
-
|
|
156
119
|
const value = input[field.fieldId];
|
|
157
|
-
|
|
158
120
|
if (value === undefined) {
|
|
159
121
|
return acc;
|
|
160
122
|
}
|
|
161
|
-
|
|
162
123
|
acc[field.fieldId] = value;
|
|
163
124
|
return acc;
|
|
164
125
|
}, {});
|
|
@@ -167,22 +128,16 @@ const mapAndCleanUpdatedInputData = (model, input) => {
|
|
|
167
128
|
* This method takes original entry meta and new input.
|
|
168
129
|
* When new meta is merged onto the existing one, everything that has undefined or null value is removed.
|
|
169
130
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
131
|
const createEntryMeta = (input, original) => {
|
|
173
132
|
const meta = (0, _merge.default)(original || {}, input || {});
|
|
174
|
-
|
|
175
133
|
for (const key in meta) {
|
|
176
134
|
if (meta[key] !== undefined || meta[key] !== null) {
|
|
177
135
|
continue;
|
|
178
136
|
}
|
|
179
|
-
|
|
180
137
|
delete meta[key];
|
|
181
138
|
}
|
|
182
|
-
|
|
183
139
|
return meta;
|
|
184
140
|
};
|
|
185
|
-
|
|
186
141
|
const createEntryId = version => {
|
|
187
142
|
const entryId = (0, _mdbid.default)();
|
|
188
143
|
return {
|
|
@@ -194,19 +149,16 @@ const createEntryId = version => {
|
|
|
194
149
|
})
|
|
195
150
|
};
|
|
196
151
|
};
|
|
197
|
-
|
|
198
152
|
const increaseEntryIdVersion = id => {
|
|
199
153
|
const {
|
|
200
154
|
id: entryId,
|
|
201
155
|
version
|
|
202
156
|
} = (0, _utils.parseIdentifier)(id);
|
|
203
|
-
|
|
204
157
|
if (!version) {
|
|
205
158
|
throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
|
|
206
159
|
id
|
|
207
160
|
});
|
|
208
161
|
}
|
|
209
|
-
|
|
210
162
|
return {
|
|
211
163
|
entryId,
|
|
212
164
|
version: version + 1,
|
|
@@ -216,7 +168,6 @@ const increaseEntryIdVersion = id => {
|
|
|
216
168
|
})
|
|
217
169
|
};
|
|
218
170
|
};
|
|
219
|
-
|
|
220
171
|
const getSearchableFields = params => {
|
|
221
172
|
const {
|
|
222
173
|
plugins,
|
|
@@ -231,9 +182,7 @@ const getSearchableFields = params => {
|
|
|
231
182
|
if (!field.fieldId) {
|
|
232
183
|
return false;
|
|
233
184
|
}
|
|
234
|
-
|
|
235
185
|
const plugin = fieldPluginMap[field.type];
|
|
236
|
-
|
|
237
186
|
if (!plugin) {
|
|
238
187
|
return false;
|
|
239
188
|
} else if (!plugin.fullTextSearch) {
|
|
@@ -241,17 +190,13 @@ const getSearchableFields = params => {
|
|
|
241
190
|
} else if (!fields || fields.length === 0) {
|
|
242
191
|
return true;
|
|
243
192
|
}
|
|
244
|
-
|
|
245
193
|
return fields.includes(field.fieldId);
|
|
246
194
|
}).map(field => field.fieldId);
|
|
247
195
|
};
|
|
248
|
-
|
|
249
196
|
const allowedEntryStatus = ["draft", "published", "unpublished"];
|
|
250
|
-
|
|
251
197
|
const transformEntryStatus = status => {
|
|
252
198
|
return allowedEntryStatus.includes(status) ? status : "draft";
|
|
253
199
|
};
|
|
254
|
-
|
|
255
200
|
const createContentEntryCrud = params => {
|
|
256
201
|
const {
|
|
257
202
|
storageOperations,
|
|
@@ -261,43 +206,52 @@ const createContentEntryCrud = params => {
|
|
|
261
206
|
} = params;
|
|
262
207
|
const {
|
|
263
208
|
plugins
|
|
264
|
-
} = context;
|
|
209
|
+
} = context;
|
|
265
210
|
|
|
211
|
+
// create
|
|
266
212
|
const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
|
|
267
213
|
const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
|
|
268
|
-
const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
|
|
214
|
+
const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
|
|
269
215
|
|
|
216
|
+
// create revision
|
|
270
217
|
const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
|
|
271
218
|
const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
|
|
272
|
-
const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
|
|
219
|
+
const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
|
|
273
220
|
|
|
221
|
+
// update
|
|
274
222
|
const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
|
|
275
223
|
const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
|
|
276
|
-
const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
|
|
224
|
+
const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
|
|
277
225
|
|
|
226
|
+
// publish
|
|
278
227
|
const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
|
|
279
228
|
const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublic");
|
|
280
|
-
const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
|
|
229
|
+
const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
|
|
281
230
|
|
|
231
|
+
// unpublish
|
|
282
232
|
const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
|
|
283
233
|
const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
|
|
284
|
-
const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
|
|
234
|
+
const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
|
|
285
235
|
|
|
236
|
+
// delete
|
|
286
237
|
const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
|
|
287
238
|
const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
|
|
288
|
-
const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
|
|
239
|
+
const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
|
|
289
240
|
|
|
241
|
+
// delete revision
|
|
290
242
|
const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
|
|
291
243
|
const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
|
|
292
|
-
const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
|
|
244
|
+
const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
|
|
293
245
|
|
|
294
|
-
|
|
246
|
+
// get
|
|
247
|
+
const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet");
|
|
295
248
|
|
|
249
|
+
// list
|
|
296
250
|
const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
|
|
251
|
+
|
|
297
252
|
/**
|
|
298
253
|
* We need to assign some default behaviors.
|
|
299
254
|
*/
|
|
300
|
-
|
|
301
255
|
(0, _beforeCreate.assignBeforeEntryCreate)({
|
|
302
256
|
context,
|
|
303
257
|
onEntryBeforeCreate
|
|
@@ -310,21 +264,18 @@ const createContentEntryCrud = params => {
|
|
|
310
264
|
context,
|
|
311
265
|
onEntryAfterDelete
|
|
312
266
|
});
|
|
313
|
-
|
|
314
267
|
const checkEntryPermissions = check => {
|
|
315
268
|
return (0, _permissions.checkPermissions)(context, "cms.contentEntry", check);
|
|
316
269
|
};
|
|
270
|
+
|
|
317
271
|
/**
|
|
318
272
|
* A helper to delete the entire entry.
|
|
319
273
|
*/
|
|
320
|
-
|
|
321
|
-
|
|
322
274
|
const deleteEntry = async params => {
|
|
323
275
|
const {
|
|
324
276
|
model,
|
|
325
277
|
entry
|
|
326
278
|
} = params;
|
|
327
|
-
|
|
328
279
|
try {
|
|
329
280
|
await onEntryBeforeDelete.publish({
|
|
330
281
|
entry,
|
|
@@ -351,8 +302,6 @@ const createContentEntryCrud = params => {
|
|
|
351
302
|
/**
|
|
352
303
|
* A helper to get entries by revision IDs
|
|
353
304
|
*/
|
|
354
|
-
|
|
355
|
-
|
|
356
305
|
const getEntriesByIds = async (initialModel, ids) => {
|
|
357
306
|
const permission = await checkEntryPermissions({
|
|
358
307
|
rwd: "r"
|
|
@@ -367,7 +316,6 @@ const createContentEntryCrud = params => {
|
|
|
367
316
|
});
|
|
368
317
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
369
318
|
};
|
|
370
|
-
|
|
371
319
|
return {
|
|
372
320
|
/**
|
|
373
321
|
* Deprecated - will be removed in 5.35.0
|
|
@@ -388,7 +336,6 @@ const createContentEntryCrud = params => {
|
|
|
388
336
|
onAfterEntryUnpublish: onEntryAfterUnpublish,
|
|
389
337
|
onBeforeEntryGet: onEntryBeforeGet,
|
|
390
338
|
onBeforeEntryList: onEntryBeforeList,
|
|
391
|
-
|
|
392
339
|
/**
|
|
393
340
|
* Released in 5.34.0
|
|
394
341
|
*/
|
|
@@ -415,12 +362,10 @@ const createContentEntryCrud = params => {
|
|
|
415
362
|
onEntryUnpublishError,
|
|
416
363
|
onEntryBeforeGet,
|
|
417
364
|
onEntryBeforeList,
|
|
418
|
-
|
|
419
365
|
/**
|
|
420
366
|
* Get entries by exact revision IDs from the database.
|
|
421
367
|
*/
|
|
422
368
|
getEntriesByIds: getEntriesByIds,
|
|
423
|
-
|
|
424
369
|
/**
|
|
425
370
|
* Get a single entry by revision ID from the database.
|
|
426
371
|
*/
|
|
@@ -437,14 +382,11 @@ const createContentEntryCrud = params => {
|
|
|
437
382
|
model
|
|
438
383
|
});
|
|
439
384
|
const [entry] = await getEntriesByIds(model, [id]);
|
|
440
|
-
|
|
441
385
|
if (!entry) {
|
|
442
386
|
throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
|
|
443
387
|
}
|
|
444
|
-
|
|
445
388
|
return entry;
|
|
446
389
|
},
|
|
447
|
-
|
|
448
390
|
/**
|
|
449
391
|
* Get published revisions by entry IDs.
|
|
450
392
|
*/
|
|
@@ -462,7 +404,6 @@ const createContentEntryCrud = params => {
|
|
|
462
404
|
});
|
|
463
405
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
464
406
|
},
|
|
465
|
-
|
|
466
407
|
/**
|
|
467
408
|
* Get latest revisions by entry IDs.
|
|
468
409
|
*/
|
|
@@ -480,7 +421,6 @@ const createContentEntryCrud = params => {
|
|
|
480
421
|
});
|
|
481
422
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
482
423
|
},
|
|
483
|
-
|
|
484
424
|
async getEntryRevisions(initialModel, entryId) {
|
|
485
425
|
const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
|
|
486
426
|
model: initialModel,
|
|
@@ -490,7 +430,6 @@ const createContentEntryCrud = params => {
|
|
|
490
430
|
id: entryId
|
|
491
431
|
});
|
|
492
432
|
},
|
|
493
|
-
|
|
494
433
|
/**
|
|
495
434
|
* TODO determine if this method is required at all.
|
|
496
435
|
*
|
|
@@ -517,14 +456,11 @@ const createContentEntryCrud = params => {
|
|
|
517
456
|
sort,
|
|
518
457
|
limit: 1
|
|
519
458
|
});
|
|
520
|
-
|
|
521
459
|
if (items.length === 0) {
|
|
522
460
|
throw new _handlerGraphql.NotFoundError(`Entry not found!`);
|
|
523
461
|
}
|
|
524
|
-
|
|
525
462
|
return items[0];
|
|
526
463
|
},
|
|
527
|
-
|
|
528
464
|
/**
|
|
529
465
|
* @description Should not be used directly. Internal use only!
|
|
530
466
|
*
|
|
@@ -545,15 +481,12 @@ const createContentEntryCrud = params => {
|
|
|
545
481
|
/**
|
|
546
482
|
* We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
|
|
547
483
|
*/
|
|
548
|
-
|
|
549
484
|
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
550
485
|
/**
|
|
551
486
|
* Possibly only get records which are owned by current user.
|
|
552
487
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
553
488
|
*/
|
|
554
|
-
|
|
555
489
|
const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
|
|
556
|
-
|
|
557
490
|
if (ownedBy !== undefined) {
|
|
558
491
|
where.ownedBy = ownedBy;
|
|
559
492
|
}
|
|
@@ -561,8 +494,6 @@ const createContentEntryCrud = params => {
|
|
|
561
494
|
* Where must contain either latest or published keys.
|
|
562
495
|
* We cannot list entries without one of those
|
|
563
496
|
*/
|
|
564
|
-
|
|
565
|
-
|
|
566
497
|
if (where.latest && where.published) {
|
|
567
498
|
throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
|
|
568
499
|
where
|
|
@@ -572,13 +503,11 @@ const createContentEntryCrud = params => {
|
|
|
572
503
|
where
|
|
573
504
|
});
|
|
574
505
|
}
|
|
575
|
-
|
|
576
506
|
const fields = getSearchableFields({
|
|
577
507
|
model,
|
|
578
508
|
plugins: context.plugins,
|
|
579
509
|
fields: params.fields || []
|
|
580
510
|
});
|
|
581
|
-
|
|
582
511
|
try {
|
|
583
512
|
await onEntryBeforeList.publish({
|
|
584
513
|
where,
|
|
@@ -596,7 +525,6 @@ const createContentEntryCrud = params => {
|
|
|
596
525
|
const meta = {
|
|
597
526
|
hasMoreItems,
|
|
598
527
|
totalCount,
|
|
599
|
-
|
|
600
528
|
/**
|
|
601
529
|
* Cursor should be null if there are no more items to load.
|
|
602
530
|
* Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
|
|
@@ -617,7 +545,6 @@ const createContentEntryCrud = params => {
|
|
|
617
545
|
});
|
|
618
546
|
}
|
|
619
547
|
},
|
|
620
|
-
|
|
621
548
|
async listLatestEntries(model, params) {
|
|
622
549
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
623
550
|
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
@@ -628,7 +555,6 @@ const createContentEntryCrud = params => {
|
|
|
628
555
|
})
|
|
629
556
|
}));
|
|
630
557
|
},
|
|
631
|
-
|
|
632
558
|
async listPublishedEntries(model, params) {
|
|
633
559
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
634
560
|
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
@@ -639,7 +565,6 @@ const createContentEntryCrud = params => {
|
|
|
639
565
|
})
|
|
640
566
|
}));
|
|
641
567
|
},
|
|
642
|
-
|
|
643
568
|
async createEntry(initialModel, inputData) {
|
|
644
569
|
await checkEntryPermissions({
|
|
645
570
|
rwd: "w"
|
|
@@ -649,10 +574,10 @@ const createContentEntryCrud = params => {
|
|
|
649
574
|
model: initialModel,
|
|
650
575
|
plugins
|
|
651
576
|
});
|
|
577
|
+
|
|
652
578
|
/**
|
|
653
579
|
* Make sure we only work with fields that are defined in the model.
|
|
654
580
|
*/
|
|
655
|
-
|
|
656
581
|
const initialInput = mapAndCleanCreateInputData(model, inputData);
|
|
657
582
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
658
583
|
context,
|
|
@@ -694,7 +619,6 @@ const createContentEntryCrud = params => {
|
|
|
694
619
|
values: input
|
|
695
620
|
};
|
|
696
621
|
let storageEntry = null;
|
|
697
|
-
|
|
698
622
|
try {
|
|
699
623
|
await onEntryBeforeCreate.publish({
|
|
700
624
|
entry,
|
|
@@ -728,7 +652,6 @@ const createContentEntryCrud = params => {
|
|
|
728
652
|
});
|
|
729
653
|
}
|
|
730
654
|
},
|
|
731
|
-
|
|
732
655
|
async createEntryRevisionFrom(initialModel, sourceId, inputData) {
|
|
733
656
|
const permission = await checkEntryPermissions({
|
|
734
657
|
rwd: "w"
|
|
@@ -738,15 +661,15 @@ const createContentEntryCrud = params => {
|
|
|
738
661
|
model: initialModel,
|
|
739
662
|
plugins
|
|
740
663
|
});
|
|
664
|
+
|
|
741
665
|
/**
|
|
742
666
|
* Make sure we only work with fields that are defined in the model.
|
|
743
667
|
*/
|
|
744
|
-
|
|
745
668
|
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
669
|
+
|
|
746
670
|
/**
|
|
747
671
|
* Entries are identified by a common parent ID + Revision number.
|
|
748
672
|
*/
|
|
749
|
-
|
|
750
673
|
const {
|
|
751
674
|
id: uniqueId
|
|
752
675
|
} = (0, _utils.parseIdentifier)(sourceId);
|
|
@@ -756,15 +679,13 @@ const createContentEntryCrud = params => {
|
|
|
756
679
|
const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
757
680
|
id: uniqueId
|
|
758
681
|
});
|
|
759
|
-
|
|
760
682
|
if (!originalStorageEntry) {
|
|
761
683
|
throw new _handlerGraphql.NotFoundError(`Entry "${sourceId}" of model "${model.modelId}" was not found.`);
|
|
762
684
|
}
|
|
685
|
+
|
|
763
686
|
/**
|
|
764
687
|
* We need to convert data from DB to its original form before using it further.
|
|
765
688
|
*/
|
|
766
|
-
|
|
767
|
-
|
|
768
689
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
769
690
|
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
770
691
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
@@ -802,7 +723,6 @@ const createContentEntryCrud = params => {
|
|
|
802
723
|
values
|
|
803
724
|
});
|
|
804
725
|
let storageEntry = null;
|
|
805
|
-
|
|
806
726
|
try {
|
|
807
727
|
await onEntryBeforeCreateRevision.publish({
|
|
808
728
|
input,
|
|
@@ -839,7 +759,6 @@ const createContentEntryCrud = params => {
|
|
|
839
759
|
});
|
|
840
760
|
}
|
|
841
761
|
},
|
|
842
|
-
|
|
843
762
|
async updateEntry(initialModel, id, inputData, metaInput) {
|
|
844
763
|
const permission = await checkEntryPermissions({
|
|
845
764
|
rwd: "w"
|
|
@@ -849,27 +768,24 @@ const createContentEntryCrud = params => {
|
|
|
849
768
|
model: initialModel,
|
|
850
769
|
plugins
|
|
851
770
|
});
|
|
771
|
+
|
|
852
772
|
/**
|
|
853
773
|
* Make sure we only work with fields that are defined in the model.
|
|
854
774
|
*/
|
|
855
|
-
|
|
856
775
|
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
776
|
+
|
|
857
777
|
/**
|
|
858
778
|
* The entry we are going to update.
|
|
859
779
|
*/
|
|
860
|
-
|
|
861
780
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
862
781
|
id
|
|
863
782
|
});
|
|
864
|
-
|
|
865
783
|
if (!originalStorageEntry) {
|
|
866
784
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
867
785
|
}
|
|
868
|
-
|
|
869
786
|
if (originalStorageEntry.locked) {
|
|
870
787
|
throw new _error.default(`Cannot update entry because it's locked.`, "CONTENT_ENTRY_UPDATE_ERROR");
|
|
871
788
|
}
|
|
872
|
-
|
|
873
789
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
874
790
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
875
791
|
context,
|
|
@@ -888,12 +804,10 @@ const createContentEntryCrud = params => {
|
|
|
888
804
|
/**
|
|
889
805
|
* If users wants to remove a key from meta values, they need to send meta key with the null value.
|
|
890
806
|
*/
|
|
891
|
-
|
|
892
807
|
const meta = createEntryMeta(metaInput, originalEntry.meta);
|
|
893
808
|
/**
|
|
894
809
|
* We always send the full entry to the hooks and storage operations update.
|
|
895
810
|
*/
|
|
896
|
-
|
|
897
811
|
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
898
812
|
savedOn: new Date().toISOString(),
|
|
899
813
|
values,
|
|
@@ -901,7 +815,6 @@ const createContentEntryCrud = params => {
|
|
|
901
815
|
status: transformEntryStatus(originalEntry.status)
|
|
902
816
|
});
|
|
903
817
|
let storageEntry = null;
|
|
904
|
-
|
|
905
818
|
try {
|
|
906
819
|
await onEntryBeforeUpdate.publish({
|
|
907
820
|
entry,
|
|
@@ -938,7 +851,6 @@ const createContentEntryCrud = params => {
|
|
|
938
851
|
});
|
|
939
852
|
}
|
|
940
853
|
},
|
|
941
|
-
|
|
942
854
|
async republishEntry(initialModel, id) {
|
|
943
855
|
await checkEntryPermissions({
|
|
944
856
|
rwd: "w"
|
|
@@ -951,27 +863,22 @@ const createContentEntryCrud = params => {
|
|
|
951
863
|
/**
|
|
952
864
|
* Fetch the entry from the storage.
|
|
953
865
|
*/
|
|
954
|
-
|
|
955
866
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
956
867
|
id
|
|
957
868
|
});
|
|
958
|
-
|
|
959
869
|
if (!originalStorageEntry) {
|
|
960
870
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
|
|
961
871
|
}
|
|
962
|
-
|
|
963
872
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
964
873
|
/**
|
|
965
874
|
* We can only process published entries.
|
|
966
875
|
*/
|
|
967
|
-
|
|
968
876
|
if (originalEntry.status !== "published") {
|
|
969
877
|
throw new _error.default("Entry with given ID is not published!", "NOT_PUBLISHED_ERROR", {
|
|
970
878
|
id,
|
|
971
879
|
original: originalEntry
|
|
972
880
|
});
|
|
973
881
|
}
|
|
974
|
-
|
|
975
882
|
const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
|
|
976
883
|
context,
|
|
977
884
|
model,
|
|
@@ -987,7 +894,6 @@ const createContentEntryCrud = params => {
|
|
|
987
894
|
/**
|
|
988
895
|
* First we need to update existing entry.
|
|
989
896
|
*/
|
|
990
|
-
|
|
991
897
|
try {
|
|
992
898
|
await storageOperations.entries.update(model, {
|
|
993
899
|
entry,
|
|
@@ -1001,8 +907,6 @@ const createContentEntryCrud = params => {
|
|
|
1001
907
|
/**
|
|
1002
908
|
* Then we move onto publishing it again.
|
|
1003
909
|
*/
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
910
|
try {
|
|
1007
911
|
return await storageOperations.entries.publish(model, {
|
|
1008
912
|
entry,
|
|
@@ -1014,7 +918,6 @@ const createContentEntryCrud = params => {
|
|
|
1014
918
|
});
|
|
1015
919
|
}
|
|
1016
920
|
},
|
|
1017
|
-
|
|
1018
921
|
async deleteEntryRevision(initialModel, revisionId) {
|
|
1019
922
|
const permission = await checkEntryPermissions({
|
|
1020
923
|
rwd: "d"
|
|
@@ -1038,11 +941,9 @@ const createContentEntryCrud = params => {
|
|
|
1038
941
|
entryId,
|
|
1039
942
|
version: version
|
|
1040
943
|
});
|
|
1041
|
-
|
|
1042
944
|
if (!storageEntryToDelete) {
|
|
1043
945
|
throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
|
|
1044
946
|
}
|
|
1045
|
-
|
|
1046
947
|
(0, _ownership.checkOwnership)(context, permission, storageEntryToDelete);
|
|
1047
948
|
const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
|
|
1048
949
|
const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
|
|
@@ -1050,7 +951,6 @@ const createContentEntryCrud = params => {
|
|
|
1050
951
|
* If targeted record is the latest entry record and there is no previous one, we need to run full delete with hooks.
|
|
1051
952
|
* At this point deleteRevision hooks are not fired.
|
|
1052
953
|
*/
|
|
1053
|
-
|
|
1054
954
|
if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
|
|
1055
955
|
return await deleteEntry({
|
|
1056
956
|
model,
|
|
@@ -1060,16 +960,12 @@ const createContentEntryCrud = params => {
|
|
|
1060
960
|
/**
|
|
1061
961
|
* If targeted record is latest entry revision, set the previous one as the new latest
|
|
1062
962
|
*/
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
963
|
let entryToSetAsLatest = null;
|
|
1066
964
|
let storageEntryToSetAsLatest = null;
|
|
1067
|
-
|
|
1068
965
|
if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {
|
|
1069
966
|
entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, previousStorageEntry);
|
|
1070
967
|
storageEntryToSetAsLatest = previousStorageEntry;
|
|
1071
968
|
}
|
|
1072
|
-
|
|
1073
969
|
try {
|
|
1074
970
|
await onEntryRevisionBeforeDelete.publish({
|
|
1075
971
|
entry: entryToDelete,
|
|
@@ -1100,7 +996,6 @@ const createContentEntryCrud = params => {
|
|
|
1100
996
|
});
|
|
1101
997
|
}
|
|
1102
998
|
},
|
|
1103
|
-
|
|
1104
999
|
async deleteEntry(initialModel, entryId) {
|
|
1105
1000
|
const permission = await checkEntryPermissions({
|
|
1106
1001
|
rwd: "d"
|
|
@@ -1113,11 +1008,9 @@ const createContentEntryCrud = params => {
|
|
|
1113
1008
|
const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
1114
1009
|
id: entryId
|
|
1115
1010
|
});
|
|
1116
|
-
|
|
1117
1011
|
if (!storageEntry) {
|
|
1118
1012
|
throw new _handlerGraphql.NotFoundError(`Entry "${entryId}" was not found!`);
|
|
1119
1013
|
}
|
|
1120
|
-
|
|
1121
1014
|
(0, _ownership.checkOwnership)(context, permission, storageEntry);
|
|
1122
1015
|
const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
|
|
1123
1016
|
return await deleteEntry({
|
|
@@ -1125,7 +1018,6 @@ const createContentEntryCrud = params => {
|
|
|
1125
1018
|
entry
|
|
1126
1019
|
});
|
|
1127
1020
|
},
|
|
1128
|
-
|
|
1129
1021
|
async publishEntry(initialModel, id) {
|
|
1130
1022
|
const permission = await checkEntryPermissions({
|
|
1131
1023
|
pw: "p"
|
|
@@ -1138,11 +1030,9 @@ const createContentEntryCrud = params => {
|
|
|
1138
1030
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
1139
1031
|
id
|
|
1140
1032
|
});
|
|
1141
|
-
|
|
1142
1033
|
if (!originalStorageEntry) {
|
|
1143
1034
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
|
|
1144
1035
|
}
|
|
1145
|
-
|
|
1146
1036
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1147
1037
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1148
1038
|
const currentDate = new Date().toISOString();
|
|
@@ -1153,7 +1043,6 @@ const createContentEntryCrud = params => {
|
|
|
1153
1043
|
publishedOn: currentDate
|
|
1154
1044
|
});
|
|
1155
1045
|
let storageEntry = null;
|
|
1156
|
-
|
|
1157
1046
|
try {
|
|
1158
1047
|
await onEntryBeforePublish.publish({
|
|
1159
1048
|
entry,
|
|
@@ -1185,7 +1074,6 @@ const createContentEntryCrud = params => {
|
|
|
1185
1074
|
});
|
|
1186
1075
|
}
|
|
1187
1076
|
},
|
|
1188
|
-
|
|
1189
1077
|
async unpublishEntry(initialModel, id) {
|
|
1190
1078
|
const permission = await checkEntryPermissions({
|
|
1191
1079
|
pw: "u"
|
|
@@ -1200,24 +1088,20 @@ const createContentEntryCrud = params => {
|
|
|
1200
1088
|
const originalStorageEntry = await storageOperations.entries.getPublishedRevisionByEntryId(model, {
|
|
1201
1089
|
id: entryId
|
|
1202
1090
|
});
|
|
1203
|
-
|
|
1204
1091
|
if (!originalStorageEntry) {
|
|
1205
1092
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
1206
1093
|
}
|
|
1207
|
-
|
|
1208
1094
|
if (originalStorageEntry.id !== id) {
|
|
1209
1095
|
throw new _error.default(`Entry is not published.`, "UNPUBLISH_ERROR", {
|
|
1210
1096
|
entry: originalStorageEntry
|
|
1211
1097
|
});
|
|
1212
1098
|
}
|
|
1213
|
-
|
|
1214
1099
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1215
1100
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1216
1101
|
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1217
1102
|
status: STATUS_UNPUBLISHED
|
|
1218
1103
|
});
|
|
1219
1104
|
let storageEntry = null;
|
|
1220
|
-
|
|
1221
1105
|
try {
|
|
1222
1106
|
await onEntryBeforeUnpublish.publish({
|
|
1223
1107
|
entry,
|
|
@@ -1248,8 +1132,6 @@ const createContentEntryCrud = params => {
|
|
|
1248
1132
|
});
|
|
1249
1133
|
}
|
|
1250
1134
|
}
|
|
1251
|
-
|
|
1252
1135
|
};
|
|
1253
1136
|
};
|
|
1254
|
-
|
|
1255
1137
|
exports.createContentEntryCrud = createContentEntryCrud;
|