@webiny/api-headless-cms 0.0.0-unstable.990c3ab1b6 → 0.0.0-unstable.d16f688daf

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