@webiny/api-headless-cms-ddb 0.0.0-unstable.b02d94bba0 → 0.0.0-unstable.b14eaecf38

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/index.js CHANGED
@@ -37,6 +37,7 @@ Object.keys(_plugins3).forEach(function (key) {
37
37
  });
38
38
  });
39
39
  var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin");
40
+ var _apiHeadlessCms = require("@webiny/api-headless-cms");
40
41
  const createStorageOperations = params => {
41
42
  const {
42
43
  attributes,
@@ -95,7 +96,7 @@ const createStorageOperations = params => {
95
96
  return {
96
97
  name: "dynamodb",
97
98
  beforeInit: async context => {
98
- const types = ["cms-model-field-to-graphql", _plugins3.CmsEntryFieldFilterPathPlugin.type, _plugins3.CmsFieldFilterValueTransformPlugin.type, _plugins3.CmsEntryFieldFilterPlugin.type, _plugins3.CmsEntryFieldSortingPlugin.type, _ValueFilterPlugin.ValueFilterPlugin.type];
99
+ const types = ["cms-model-field-to-graphql", _plugins3.CmsEntryFieldFilterPathPlugin.type, _plugins3.CmsFieldFilterValueTransformPlugin.type, _plugins3.CmsEntryFieldFilterPlugin.type, _plugins3.CmsEntryFieldSortingPlugin.type, _ValueFilterPlugin.ValueFilterPlugin.type, _apiHeadlessCms.StorageOperationsCmsModelPlugin.type];
99
100
  /**
100
101
  * Collect all required plugins from parent context.
101
102
  */
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createStorageOperations","params","attributes","table","documentClient","plugins","userPlugins","tableInstance","createTable","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","groups","createGroupEntity","GROUPS","models","createModelEntity","MODELS","entries","createEntryEntity","ENTRIES","PluginsContainer","dynamoDbValueFilters","dynamoDbPlugins","createFilterCreatePlugins","name","beforeInit","context","types","CmsEntryFieldFilterPathPlugin","type","CmsFieldFilterValueTransformPlugin","CmsEntryFieldFilterPlugin","CmsEntryFieldSortingPlugin","ValueFilterPlugin","mergeByType","register","getEntities","getTable","createSystemStorageOperations","entity","createSettingsStorageOperations","createGroupsStorageOperations","createModelsStorageOperations","createEntriesStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport dynamoDbPlugins from \"./dynamoDb\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createGroupEntity } from \"~/definitions/group\";\nimport { createModelEntity } from \"~/definitions/model\";\nimport { createEntryEntity } from \"~/definitions/entry\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createGroupsStorageOperations } from \"~/operations/group\";\nimport { createModelsStorageOperations } from \"~/operations/model\";\nimport { createEntriesStorageOperations } from \"./operations/entry\";\n\nimport { createFilterCreatePlugins } from \"~/operations/entry/filtering/plugins\";\nimport {\n CmsEntryFieldFilterPathPlugin,\n CmsEntryFieldFilterPlugin,\n CmsEntryFieldSortingPlugin,\n CmsFieldFilterValueTransformPlugin\n} from \"~/plugins\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const { attributes, table, documentClient, plugins: userPlugins } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n groups: createGroupEntity({\n entityName: ENTITIES.GROUPS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.GROUPS] : {}\n }),\n models: createModelEntity({\n entityName: ENTITIES.MODELS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MODELS] : {}\n }),\n entries: createEntryEntity({\n entityName: ENTITIES.ENTRIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.ENTRIES] : {}\n })\n };\n\n const plugins = new PluginsContainer([\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Field plugins for DynamoDB.\n */\n dynamoDbPlugins(),\n /**\n * Filter create plugins.\n */\n createFilterCreatePlugins(),\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || [])\n ]);\n\n return {\n name: \"dynamodb\",\n beforeInit: async context => {\n const types: string[] = [\n \"cms-model-field-to-graphql\",\n CmsEntryFieldFilterPathPlugin.type,\n CmsFieldFilterValueTransformPlugin.type,\n CmsEntryFieldFilterPlugin.type,\n CmsEntryFieldSortingPlugin.type,\n ValueFilterPlugin.type\n ];\n /**\n * Collect all required plugins from parent context.\n */\n for (const type of types) {\n plugins.mergeByType(context.plugins, type);\n }\n /**\n * Pass the plugins to the parent context.\n */\n context.plugins.register([dynamoDbPlugins()]);\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n groups: createGroupsStorageOperations({\n entity: entities.groups,\n plugins\n }),\n models: createModelsStorageOperations({\n entity: entities.models\n }),\n entries: createEntriesStorageOperations({\n entity: entities.entries,\n plugins\n })\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createStorageOperations","params","attributes","table","documentClient","plugins","userPlugins","tableInstance","createTable","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","groups","createGroupEntity","GROUPS","models","createModelEntity","MODELS","entries","createEntryEntity","ENTRIES","PluginsContainer","dynamoDbValueFilters","dynamoDbPlugins","createFilterCreatePlugins","name","beforeInit","context","types","CmsEntryFieldFilterPathPlugin","type","CmsFieldFilterValueTransformPlugin","CmsEntryFieldFilterPlugin","CmsEntryFieldSortingPlugin","ValueFilterPlugin","StorageOperationsCmsModelPlugin","mergeByType","register","getEntities","getTable","createSystemStorageOperations","entity","createSettingsStorageOperations","createGroupsStorageOperations","createModelsStorageOperations","createEntriesStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport dynamoDbPlugins from \"./dynamoDb\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createGroupEntity } from \"~/definitions/group\";\nimport { createModelEntity } from \"~/definitions/model\";\nimport { createEntryEntity } from \"~/definitions/entry\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createGroupsStorageOperations } from \"~/operations/group\";\nimport { createModelsStorageOperations } from \"~/operations/model\";\nimport { createEntriesStorageOperations } from \"./operations/entry\";\n\nimport { createFilterCreatePlugins } from \"~/operations/entry/filtering/plugins\";\nimport {\n CmsEntryFieldFilterPathPlugin,\n CmsEntryFieldFilterPlugin,\n CmsEntryFieldSortingPlugin,\n CmsFieldFilterValueTransformPlugin\n} from \"~/plugins\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\nimport { StorageOperationsCmsModelPlugin } from \"@webiny/api-headless-cms\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const { attributes, table, documentClient, plugins: userPlugins } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n groups: createGroupEntity({\n entityName: ENTITIES.GROUPS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.GROUPS] : {}\n }),\n models: createModelEntity({\n entityName: ENTITIES.MODELS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MODELS] : {}\n }),\n entries: createEntryEntity({\n entityName: ENTITIES.ENTRIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.ENTRIES] : {}\n })\n };\n\n const plugins = new PluginsContainer([\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Field plugins for DynamoDB.\n */\n dynamoDbPlugins(),\n /**\n * Filter create plugins.\n */\n createFilterCreatePlugins(),\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || [])\n ]);\n\n return {\n name: \"dynamodb\",\n beforeInit: async context => {\n const types: string[] = [\n \"cms-model-field-to-graphql\",\n CmsEntryFieldFilterPathPlugin.type,\n CmsFieldFilterValueTransformPlugin.type,\n CmsEntryFieldFilterPlugin.type,\n CmsEntryFieldSortingPlugin.type,\n ValueFilterPlugin.type,\n StorageOperationsCmsModelPlugin.type\n ];\n /**\n * Collect all required plugins from parent context.\n */\n for (const type of types) {\n plugins.mergeByType(context.plugins, type);\n }\n /**\n * Pass the plugins to the parent context.\n */\n context.plugins.register([dynamoDbPlugins()]);\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n groups: createGroupsStorageOperations({\n entity: entities.groups,\n plugins\n }),\n models: createModelsStorageOperations({\n entity: entities.models\n }),\n entries: createEntriesStorageOperations({\n entity: entities.entries,\n plugins\n })\n };\n};\n"],"mappings":"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"}
@@ -58,6 +58,18 @@ const createEntriesStorageOperations = params => {
58
58
  entity,
59
59
  plugins
60
60
  } = params;
61
+ let storageOperationsCmsModelPlugin;
62
+ const getStorageOperationsCmsModelPlugin = () => {
63
+ if (storageOperationsCmsModelPlugin) {
64
+ return storageOperationsCmsModelPlugin;
65
+ }
66
+ storageOperationsCmsModelPlugin = plugins.oneByType(_apiHeadlessCms.StorageOperationsCmsModelPlugin.type);
67
+ return storageOperationsCmsModelPlugin;
68
+ };
69
+ const getStorageOperationsModel = model => {
70
+ const plugin = getStorageOperationsCmsModelPlugin();
71
+ return plugin.getModel(model);
72
+ };
61
73
  const dataLoaders = new _dataLoaders.DataLoadersHandler({
62
74
  entity
63
75
  });
@@ -82,11 +94,12 @@ const createEntriesStorageOperations = params => {
82
94
  });
83
95
  };
84
96
  };
85
- const create = async (model, params) => {
97
+ const create = async (initialModel, params) => {
86
98
  const {
87
99
  entry,
88
100
  storageEntry: initialStorageEntry
89
101
  } = params;
102
+ const model = getStorageOperationsModel(initialModel);
90
103
  const partitionKey = (0, _keys.createPartitionKey)({
91
104
  id: entry.id,
92
105
  locale: model.locale,
@@ -101,7 +114,7 @@ const createEntriesStorageOperations = params => {
101
114
  /**
102
115
  * We need to:
103
116
  * - create new main entry item
104
- * - create new or update latest entry item
117
+ * - create new or update the latest entry item
105
118
  */
106
119
  const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, storageEntry), {}, {
107
120
  locked,
@@ -148,11 +161,12 @@ const createEntriesStorageOperations = params => {
148
161
  }
149
162
  return initialStorageEntry;
150
163
  };
151
- const createRevisionFrom = async (model, params) => {
164
+ const createRevisionFrom = async (initialModel, params) => {
152
165
  const {
153
166
  entry,
154
167
  storageEntry: initialStorageEntry
155
168
  } = params;
169
+ const model = getStorageOperationsModel(initialModel);
156
170
  const partitionKey = (0, _keys.createPartitionKey)({
157
171
  id: entry.id,
158
172
  locale: model.locale,
@@ -200,11 +214,12 @@ const createEntriesStorageOperations = params => {
200
214
  */
201
215
  return initialStorageEntry;
202
216
  };
203
- const update = async (model, params) => {
217
+ const update = async (initialModel, params) => {
204
218
  const {
205
219
  entry,
206
220
  storageEntry: initialStorageEntry
207
221
  } = params;
222
+ const model = getStorageOperationsModel(initialModel);
208
223
  const partitionKey = (0, _keys.createPartitionKey)({
209
224
  id: entry.id,
210
225
  locale: model.locale,
@@ -242,7 +257,7 @@ const createEntriesStorageOperations = params => {
242
257
  }
243
258
 
244
259
  /**
245
- * We need the latest entry to update it as well if neccessary.
260
+ * We need the latest entry to update it as well if necessary.
246
261
  */
247
262
  const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);
248
263
  if (latestStorageEntry && latestStorageEntry.id === entry.id) {
@@ -272,10 +287,11 @@ const createEntriesStorageOperations = params => {
272
287
  });
273
288
  }
274
289
  };
275
- const deleteEntry = async (model, params) => {
290
+ const deleteEntry = async (initialModel, params) => {
276
291
  const {
277
292
  entry
278
293
  } = params;
294
+ const model = getStorageOperationsModel(initialModel);
279
295
  const queryAllParams = {
280
296
  entity,
281
297
  partitionKey: (0, _keys.createPartitionKey)({
@@ -318,12 +334,13 @@ const createEntriesStorageOperations = params => {
318
334
  });
319
335
  }
320
336
  };
321
- const deleteRevision = async (model, params) => {
337
+ const deleteRevision = async (initialModel, params) => {
322
338
  const {
323
339
  entry,
324
340
  latestEntry,
325
341
  latestStorageEntry: initialLatestStorageEntry
326
342
  } = params;
343
+ const model = getStorageOperationsModel(initialModel);
327
344
  const partitionKey = (0, _keys.createPartitionKey)({
328
345
  id: entry.id,
329
346
  locale: model.locale,
@@ -373,7 +390,8 @@ const createEntriesStorageOperations = params => {
373
390
  });
374
391
  }
375
392
  };
376
- const getLatestRevisionByEntryId = async (model, params) => {
393
+ const getLatestRevisionByEntryId = async (initialModel, params) => {
394
+ const model = getStorageOperationsModel(initialModel);
377
395
  const items = await dataLoaders.getLatestRevisionByEntryId({
378
396
  model,
379
397
  ids: [params.id]
@@ -387,7 +405,8 @@ const createEntriesStorageOperations = params => {
387
405
  model
388
406
  });
389
407
  };
390
- const getPublishedRevisionByEntryId = async (model, params) => {
408
+ const getPublishedRevisionByEntryId = async (initialModel, params) => {
409
+ const model = getStorageOperationsModel(initialModel);
391
410
  const items = await dataLoaders.getPublishedRevisionByEntryId({
392
411
  model,
393
412
  ids: [params.id]
@@ -401,7 +420,8 @@ const createEntriesStorageOperations = params => {
401
420
  model
402
421
  });
403
422
  };
404
- const getRevisionById = async (model, params) => {
423
+ const getRevisionById = async (initialModel, params) => {
424
+ const model = getStorageOperationsModel(initialModel);
405
425
  const items = await dataLoaders.getRevisionById({
406
426
  model,
407
427
  ids: [params.id]
@@ -415,7 +435,8 @@ const createEntriesStorageOperations = params => {
415
435
  model
416
436
  });
417
437
  };
418
- const getRevisions = async (model, params) => {
438
+ const getRevisions = async (initialModel, params) => {
439
+ const model = getStorageOperationsModel(initialModel);
419
440
  const items = await dataLoaders.getAllEntryRevisions({
420
441
  model,
421
442
  ids: [params.id]
@@ -427,7 +448,8 @@ const createEntriesStorageOperations = params => {
427
448
  });
428
449
  });
429
450
  };
430
- const getByIds = async (model, params) => {
451
+ const getByIds = async (initialModel, params) => {
452
+ const model = getStorageOperationsModel(initialModel);
431
453
  const items = await dataLoaders.getRevisionById({
432
454
  model,
433
455
  ids: params.ids
@@ -439,7 +461,8 @@ const createEntriesStorageOperations = params => {
439
461
  });
440
462
  });
441
463
  };
442
- const getLatestByIds = async (model, params) => {
464
+ const getLatestByIds = async (initialModel, params) => {
465
+ const model = getStorageOperationsModel(initialModel);
443
466
  const items = await dataLoaders.getLatestRevisionByEntryId({
444
467
  model,
445
468
  ids: params.ids
@@ -451,7 +474,8 @@ const createEntriesStorageOperations = params => {
451
474
  });
452
475
  });
453
476
  };
454
- const getPublishedByIds = async (model, params) => {
477
+ const getPublishedByIds = async (initialModel, params) => {
478
+ const model = getStorageOperationsModel(initialModel);
455
479
  const items = await dataLoaders.getPublishedRevisionByEntryId({
456
480
  model,
457
481
  ids: params.ids
@@ -463,7 +487,8 @@ const createEntriesStorageOperations = params => {
463
487
  });
464
488
  });
465
489
  };
466
- const getPreviousRevision = async (model, params) => {
490
+ const getPreviousRevision = async (initialModel, params) => {
491
+ const model = getStorageOperationsModel(initialModel);
467
492
  const {
468
493
  entryId,
469
494
  version
@@ -509,7 +534,8 @@ const createEntriesStorageOperations = params => {
509
534
  }));
510
535
  }
511
536
  };
512
- const list = async (model, params) => {
537
+ const list = async (initialModel, params) => {
538
+ const model = getStorageOperationsModel(initialModel);
513
539
  const {
514
540
  limit: initialLimit = 10,
515
541
  where: initialWhere,
@@ -616,7 +642,8 @@ const createEntriesStorageOperations = params => {
616
642
  items: (0, _cleanup.cleanupItems)(entity, slicedItems)
617
643
  };
618
644
  };
619
- const get = async (model, params) => {
645
+ const get = async (initialModel, params) => {
646
+ const model = getStorageOperationsModel(initialModel);
620
647
  const {
621
648
  items
622
649
  } = await list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
@@ -624,11 +651,12 @@ const createEntriesStorageOperations = params => {
624
651
  }));
625
652
  return items.shift() || null;
626
653
  };
627
- const publish = async (model, params) => {
654
+ const publish = async (initialModel, params) => {
628
655
  const {
629
656
  entry,
630
657
  storageEntry: initialStorageEntry
631
658
  } = params;
659
+ const model = getStorageOperationsModel(initialModel);
632
660
  const partitionKey = (0, _keys.createPartitionKey)({
633
661
  id: entry.id,
634
662
  locale: model.locale,
@@ -636,7 +664,7 @@ const createEntriesStorageOperations = params => {
636
664
  });
637
665
 
638
666
  /**
639
- * We need the latest and published entries to see if something needs to be updated along side the publishing one.
667
+ * We need the latest and published entries to see if something needs to be updated alongside the publishing one.
640
668
  */
641
669
  const initialLatestStorageEntry = await getLatestRevisionByEntryId(model, entry);
642
670
  const initialPublishedStorageEntry = await getPublishedRevisionByEntryId(model, entry);
@@ -648,7 +676,7 @@ const createEntriesStorageOperations = params => {
648
676
  * We need to update:
649
677
  * - current entry revision sort key
650
678
  * - published sort key
651
- * - latest sort key - if entry updated is actually latest
679
+ * - the latest sort key - if entry updated is actually latest
652
680
  * - previous published entry to unpublished status - if any previously published entry
653
681
  */
654
682
  const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, storageEntry), {}, {
@@ -704,11 +732,12 @@ const createEntriesStorageOperations = params => {
704
732
  });
705
733
  }
706
734
  };
707
- const unpublish = async (model, params) => {
735
+ const unpublish = async (initialModel, params) => {
708
736
  const {
709
737
  entry,
710
738
  storageEntry: initialStorageEntry
711
739
  } = params;
740
+ const model = getStorageOperationsModel(initialModel);
712
741
  const partitionKey = (0, _keys.createPartitionKey)({
713
742
  id: entry.id,
714
743
  locale: model.locale,
@@ -722,7 +751,7 @@ const createEntriesStorageOperations = params => {
722
751
  * We need to:
723
752
  * - delete currently published entry
724
753
  * - update current entry revision with new data
725
- * - update latest entry status - if entry being unpublished is latest
754
+ * - update the latest entry status - if entry being unpublished is latest
726
755
  */
727
756
  const items = [entity.deleteBatch({
728
757
  PK: partitionKey,
@@ -736,7 +765,7 @@ const createEntriesStorageOperations = params => {
736
765
  }))];
737
766
 
738
767
  /**
739
- * We need the latest entry to see if something needs to be updated along side the unpublishing one.
768
+ * We need the latest entry to see if something needs to be updated alongside the unpublishing one.
740
769
  */
741
770
  const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);
742
771
  if (latestStorageEntry && entry.id === latestStorageEntry.id) {
@@ -1 +1 @@
1
- {"version":3,"names":["createType","createLatestType","createPublishedType","convertToStorageEntry","params","model","storageEntry","values","convertValueKeyToStorage","fields","convertFromStorageEntry","convertValueKeyFromStorage","createEntriesStorageOperations","entity","plugins","dataLoaders","DataLoadersHandler","storageTransformPlugins","byType","StorageTransformPlugin","type","reduce","collection","plugin","fieldType","createStorageTransformCallable","field","value","fromStorage","getStoragePlugin","create","entry","initialStorageEntry","partitionKey","createPartitionKey","id","locale","tenant","isPublished","status","locked","items","putBatch","PK","SK","createRevisionSortKey","TYPE","GSI1_PK","createGSIPartitionKey","GSI1_SK","createGSISortKey","createLatestSortKey","push","createPublishedSortKey","batchWriteAll","table","clearAll","ex","WebinyError","message","code","error","createRevisionFrom","update","latestStorageEntry","getLatestRevisionByEntryId","deleteEntry","queryAllParams","options","gte","records","queryAll","map","item","deleteBatch","deleteRevision","latestEntry","initialLatestStorageEntry","publishedStorageEntry","getPublishedRevisionByEntryId","ids","shift","getRevisionById","getRevisions","getAllEntryRevisions","getByIds","getLatestByIds","getPublishedByIds","getPreviousRevision","entryId","version","queryParams","lt","zeroPad","filters","attr","eq","reverse","result","queryOne","cleanupItem","list","limit","initialLimit","where","initialWhere","after","sort","sortBy","search","published","index","storageEntries","length","hasMoreItems","totalCount","cursor","modelFields","createFields","Promise","all","fieldId","filteredItems","filter","fullTextSearch","term","sortedItems","start","parseInt","decodeCursor","end","undefined","slicedItems","slice","encodeCursor","cleanupItems","get","publish","initialPublishedStorageEntry","CONTENT_ENTRY_STATUS","UNPUBLISHED","unpublish","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { DataLoadersHandler } from \"./dataLoaders\";\nimport {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryStorageOperations,\n CmsEntryStorageOperationsCreateParams,\n CmsEntryStorageOperationsCreateRevisionFromParams,\n CmsEntryStorageOperationsDeleteParams,\n CmsEntryStorageOperationsDeleteRevisionParams,\n CmsEntryStorageOperationsGetByIdsParams,\n CmsEntryStorageOperationsGetLatestByIdsParams,\n CmsEntryStorageOperationsGetLatestRevisionParams,\n CmsEntryStorageOperationsGetParams,\n CmsEntryStorageOperationsGetPreviousRevisionParams,\n CmsEntryStorageOperationsGetPublishedByIdsParams,\n CmsEntryStorageOperationsGetRevisionParams,\n CmsEntryStorageOperationsGetRevisionsParams,\n CmsEntryStorageOperationsListParams,\n CmsEntryStorageOperationsPublishParams,\n CmsEntryStorageOperationsUnpublishParams,\n CmsEntryStorageOperationsUpdateParams,\n StorageOperationsCmsModel,\n CONTENT_ENTRY_STATUS,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport {\n createGSIPartitionKey,\n createGSISortKey,\n createLatestSortKey,\n createPartitionKey,\n createPublishedSortKey,\n createRevisionSortKey\n} from \"~/operations/entry/keys\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport {\n queryAll,\n QueryAllParams,\n queryOne,\n QueryOneParams\n} from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { decodeCursor, encodeCursor } from \"@webiny/utils/cursor\";\nimport { zeroPad } from \"@webiny/utils/zeroPad\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\nimport { FilterItemFromStorage } from \"./filtering/types\";\nimport { createFields } from \"~/operations/entry/filtering/createFields\";\nimport { filter, sort } from \"~/operations/entry/filtering\";\n\nconst createType = (): string => {\n return \"cms.entry\";\n};\nconst createLatestType = (): string => {\n return `${createType()}.l`;\n};\nconst createPublishedType = (): string => {\n return `${createType()}.p`;\n};\n\ninterface ConvertStorageEntryParams {\n storageEntry: CmsStorageEntry;\n model: StorageOperationsCmsModel;\n}\nconst convertToStorageEntry = (params: ConvertStorageEntryParams): CmsStorageEntry => {\n const { model, storageEntry } = params;\n\n const values = model.convertValueKeyToStorage({\n fields: model.fields,\n values: storageEntry.values\n });\n return {\n ...storageEntry,\n values\n };\n};\n\nconst convertFromStorageEntry = (params: ConvertStorageEntryParams): CmsStorageEntry => {\n const { model, storageEntry } = params;\n\n const values = model.convertValueKeyFromStorage({\n fields: model.fields,\n values: storageEntry.values\n });\n return {\n ...storageEntry,\n values\n };\n};\n\nexport interface CreateEntriesStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createEntriesStorageOperations = (\n params: CreateEntriesStorageOperationsParams\n): CmsEntryStorageOperations => {\n const { entity, plugins } = params;\n\n const dataLoaders = new DataLoadersHandler({\n entity\n });\n\n const storageTransformPlugins = plugins\n .byType<StorageTransformPlugin>(StorageTransformPlugin.type)\n .reduce((collection, plugin) => {\n collection[plugin.fieldType] = plugin;\n return collection;\n }, {} as Record<string, StorageTransformPlugin>);\n\n const createStorageTransformCallable = (\n model: StorageOperationsCmsModel\n ): FilterItemFromStorage => {\n return (field, value) => {\n const plugin: StorageTransformPlugin = storageTransformPlugins[field.type];\n if (!plugin) {\n return value;\n }\n return plugin.fromStorage({\n model,\n field,\n value,\n getStoragePlugin(fieldType: string): StorageTransformPlugin {\n return storageTransformPlugins[fieldType] || storageTransformPlugins[\"*\"];\n },\n plugins\n });\n };\n };\n\n const create = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsCreateParams\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const isPublished = entry.status === \"published\";\n\n const locked = isPublished ? true : entry.locked;\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to:\n * - create new main entry item\n * - create new or update latest entry item\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n }),\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n ];\n\n /**\n * We need to create published entry if\n */\n if (isPublished) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert data into the DynamoDB.\",\n ex.code || \"CREATE_ENTRY_ERROR\",\n {\n error: ex,\n entry\n }\n );\n }\n\n return initialStorageEntry;\n };\n\n const createRevisionFrom = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsCreateRevisionFromParams\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const storageEntry = convertToStorageEntry({\n storageEntry: initialStorageEntry,\n model\n });\n /**\n * We need to:\n * - create the main entry item\n * - update the last entry item to a current one\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(storageEntry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n ];\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create revision from given entry.\",\n ex.code || \"CREATE_REVISION_ERROR\",\n {\n error: ex,\n entry,\n storageEntry\n }\n );\n }\n /**\n * There are no modifications on the entry created so just return the data.\n */\n return initialStorageEntry;\n };\n\n const update = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsUpdateParams\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const isPublished = entry.status === \"published\";\n const locked = isPublished ? true : entry.locked;\n\n const items = [];\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to:\n * - update the current entry\n * - update the latest entry if the current entry is the latest one\n */\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createRevisionSortKey(storageEntry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n\n if (isPublished) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createPublishedType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n }\n\n /**\n * We need the latest entry to update it as well if neccessary.\n */\n const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n\n if (latestStorageEntry && latestStorageEntry.id === entry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update entry.\",\n ex.code || \"UPDATE_ERROR\",\n {\n error: ex,\n entry,\n latestStorageEntry\n }\n );\n }\n };\n\n const deleteEntry = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsDeleteParams\n ) => {\n const { entry } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n }),\n options: {\n gte: \" \"\n }\n };\n\n let records = [];\n try {\n records = await queryAll(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all records.\",\n ex.code || \"LOAD_ALL_RECORDS_ERROR\",\n {\n error: ex,\n entry\n }\n );\n }\n const items = records.map(item => {\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the entry.\",\n ex.code || \"DELETE_ENTRY_ERROR\",\n {\n error: ex,\n partitionKey: queryAllParams.partitionKey,\n entry\n }\n );\n }\n };\n\n const deleteRevision = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsDeleteRevisionParams\n ) => {\n const { entry, latestEntry, latestStorageEntry: initialLatestStorageEntry } = params;\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createRevisionSortKey(entry)\n })\n ];\n\n const publishedStorageEntry = await getPublishedRevisionByEntryId(model, entry);\n\n /**\n * If revision we are deleting is the published one as well, we need to delete those records as well.\n */\n if (publishedStorageEntry && entry.id === publishedStorageEntry.id) {\n items.push(\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n if (initialLatestStorageEntry) {\n const latestStorageEntry = convertToStorageEntry({\n storageEntry: initialLatestStorageEntry,\n model\n });\n items.push(\n entity.putBatch({\n ...latestStorageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(latestStorageEntry)\n })\n );\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code, {\n error: ex,\n entry,\n latestEntry\n });\n }\n };\n\n const getLatestRevisionByEntryId = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetLatestRevisionParams\n ) => {\n const items = await dataLoaders.getLatestRevisionByEntryId({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n const getPublishedRevisionByEntryId = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetLatestRevisionParams\n ) => {\n const items = await dataLoaders.getPublishedRevisionByEntryId({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n\n const getRevisionById = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetRevisionParams\n ) => {\n const items = await dataLoaders.getRevisionById({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n\n const getRevisions = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetRevisionsParams\n ) => {\n const items = await dataLoaders.getAllEntryRevisions({\n model,\n ids: [params.id]\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getByIds = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetByIdsParams\n ) => {\n const items = await dataLoaders.getRevisionById({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getLatestByIds = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetLatestByIdsParams\n ) => {\n const items = await dataLoaders.getLatestRevisionByEntryId({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getPublishedByIds = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetPublishedByIdsParams\n ) => {\n const items = await dataLoaders.getPublishedRevisionByEntryId({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getPreviousRevision = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetPreviousRevisionParams\n ) => {\n const { entryId, version } = params;\n const queryParams: QueryOneParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant: model.tenant,\n locale: model.locale,\n id: entryId\n }),\n options: {\n lt: `REV#${zeroPad(version)}`,\n /**\n * We need to have extra checks because DynamoDB will return published or latest record if there is no REV# record.\n */\n filters: [\n {\n attr: \"TYPE\",\n eq: createType()\n },\n {\n attr: \"version\",\n lt: version\n }\n ],\n reverse: true\n }\n };\n\n try {\n const result = await queryOne<CmsEntry>(queryParams);\n\n const storageEntry = cleanupItem(entity, result);\n if (!storageEntry) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry,\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get previous version of given entry.\",\n ex.code || \"GET_PREVIOUS_VERSION_ERROR\",\n {\n ...params,\n error: ex,\n partitionKey: queryParams.partitionKey,\n options: queryParams.options,\n model\n }\n );\n }\n };\n\n const list = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsListParams\n ) => {\n const {\n limit: initialLimit = 10,\n where: initialWhere,\n after,\n sort: sortBy,\n fields,\n search\n } = params;\n const limit = initialLimit <= 0 || initialLimit >= 10000 ? 10000 : initialLimit;\n\n const type = initialWhere.published ? \"P\" : \"L\";\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createGSIPartitionKey(model, type),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n let storageEntries: CmsStorageEntry[] = [];\n try {\n storageEntries = await queryAll<CmsStorageEntry>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(ex.message, \"QUERY_ENTRIES_ERROR\", {\n error: ex,\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n });\n }\n if (storageEntries.length === 0) {\n return {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null,\n items: []\n };\n }\n const where: Partial<CmsEntryListWhere> = {\n ...initialWhere\n };\n delete where[\"published\"];\n delete where[\"latest\"];\n /**\n * We need an object containing field, transformers and paths.\n * Just build it here and pass on into other methods that require it to avoid mapping multiple times.\n */\n const modelFields = createFields({\n plugins,\n fields: model.fields\n });\n\n const fromStorage = createStorageTransformCallable(model);\n /**\n * Let's transform records from storage ones to regular ones, so we do not need to do it later.\n *\n * This is always being done, but at least its in parallel.\n */\n const records = await Promise.all(\n storageEntries.map(async storageEntry => {\n const entry = convertFromStorageEntry({\n storageEntry,\n model\n });\n\n for (const field of model.fields) {\n entry.values[field.fieldId] = await fromStorage(\n field,\n entry.values[field.fieldId]\n );\n }\n\n return entry as CmsEntry;\n })\n );\n /**\n * Filter the read items via the code.\n * It will build the filters out of the where input and transform the values it is using.\n */\n const filteredItems = filter({\n items: records,\n where,\n plugins,\n fields: modelFields,\n fullTextSearch: {\n term: search,\n fields: fields || []\n }\n });\n\n const totalCount = filteredItems.length;\n\n /**\n * Sorting is also done via the code.\n * It takes the sort input and sorts by it via the lodash sortBy method.\n */\n const sortedItems = sort({\n model,\n plugins,\n items: filteredItems,\n sort: sortBy,\n fields: modelFields\n });\n\n const start = parseInt((decodeCursor(after) as string) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const slicedItems = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = totalCount > start + limit ? encodeCursor(`${start + limit}`) : null;\n return {\n hasMoreItems,\n totalCount,\n cursor,\n items: cleanupItems(entity, slicedItems)\n };\n };\n\n const get = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsGetParams\n ) => {\n const { items } = await list(model, {\n ...params,\n limit: 1\n });\n return items.shift() || null;\n };\n\n const publish = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsPublishParams\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n /**\n * We need the latest and published entries to see if something needs to be updated along side the publishing one.\n */\n const initialLatestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n const initialPublishedStorageEntry = await getPublishedRevisionByEntryId(model, entry);\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to update:\n * - current entry revision sort key\n * - published sort key\n * - latest sort key - if entry updated is actually latest\n * - previous published entry to unpublished status - if any previously published entry\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(entry)\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createPublishedType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(entry)\n })\n ];\n if (initialLatestStorageEntry && entry.id === initialLatestStorageEntry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n if (initialPublishedStorageEntry && initialPublishedStorageEntry.id !== entry.id) {\n const publishedStorageEntry = convertToStorageEntry({\n storageEntry: initialPublishedStorageEntry,\n model\n });\n items.push(\n entity.putBatch({\n ...publishedStorageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(publishedStorageEntry),\n TYPE: createType(),\n status: CONTENT_ENTRY_STATUS.UNPUBLISHED,\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(publishedStorageEntry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not execute the publishing batch.\",\n ex.code || \"PUBLISH_ERROR\",\n {\n entry,\n latestStorageEntry: initialLatestStorageEntry,\n publishedStorageEntry: initialPublishedStorageEntry\n }\n );\n }\n };\n\n const unpublish = async (\n model: StorageOperationsCmsModel,\n params: CmsEntryStorageOperationsUnpublishParams\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const storageEntry = convertToStorageEntry({\n storageEntry: initialStorageEntry,\n model\n });\n /**\n * We need to:\n * - delete currently published entry\n * - update current entry revision with new data\n * - update latest entry status - if entry being unpublished is latest\n */\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(entry)\n })\n ];\n\n /**\n * We need the latest entry to see if something needs to be updated along side the unpublishing one.\n */\n const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n\n if (latestStorageEntry && entry.id === latestStorageEntry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not execute unpublish batch.\",\n ex.code || \"UNPUBLISH_ERROR\",\n {\n entry,\n storageEntry\n }\n );\n }\n };\n\n return {\n create,\n createRevisionFrom,\n update,\n delete: deleteEntry,\n deleteRevision,\n getPreviousRevision,\n getPublishedByIds,\n getLatestByIds,\n getByIds,\n getRevisionById,\n getPublishedRevisionByEntryId,\n getLatestRevisionByEntryId,\n get,\n getRevisions,\n publish,\n list,\n unpublish\n };\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AAyBA;AAQA;AACA;AAMA;AAEA;AACA;AACA;AAEA;AACA;AAEA,MAAMA,UAAU,GAAG,MAAc;EAC7B,OAAO,WAAW;AACtB,CAAC;AACD,MAAMC,gBAAgB,GAAG,MAAc;EACnC,OAAQ,GAAED,UAAU,EAAG,IAAG;AAC9B,CAAC;AACD,MAAME,mBAAmB,GAAG,MAAc;EACtC,OAAQ,GAAEF,UAAU,EAAG,IAAG;AAC9B,CAAC;AAMD,MAAMG,qBAAqB,GAAIC,MAAiC,IAAsB;EAClF,MAAM;IAAEC,KAAK;IAAEC;EAAa,CAAC,GAAGF,MAAM;EAEtC,MAAMG,MAAM,GAAGF,KAAK,CAACG,wBAAwB,CAAC;IAC1CC,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBF,MAAM,EAAED,YAAY,CAACC;EACzB,CAAC,CAAC;EACF,mEACOD,YAAY;IACfC;EAAM;AAEd,CAAC;AAED,MAAMG,uBAAuB,GAAIN,MAAiC,IAAsB;EACpF,MAAM;IAAEC,KAAK;IAAEC;EAAa,CAAC,GAAGF,MAAM;EAEtC,MAAMG,MAAM,GAAGF,KAAK,CAACM,0BAA0B,CAAC;IAC5CF,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBF,MAAM,EAAED,YAAY,CAACC;EACzB,CAAC,CAAC;EACF,mEACOD,YAAY;IACfC;EAAM;AAEd,CAAC;AAMM,MAAMK,8BAA8B,GACvCR,MAA4C,IAChB;EAC5B,MAAM;IAAES,MAAM;IAAEC;EAAQ,CAAC,GAAGV,MAAM;EAElC,MAAMW,WAAW,GAAG,IAAIC,+BAAkB,CAAC;IACvCH;EACJ,CAAC,CAAC;EAEF,MAAMI,uBAAuB,GAAGH,OAAO,CAClCI,MAAM,CAAyBC,sCAAsB,CAACC,IAAI,CAAC,CAC3DC,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;IAC5BD,UAAU,CAACC,MAAM,CAACC,SAAS,CAAC,GAAGD,MAAM;IACrC,OAAOD,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAA2C;EAEpD,MAAMG,8BAA8B,GAChCpB,KAAgC,IACR;IACxB,OAAO,CAACqB,KAAK,EAAEC,KAAK,KAAK;MACrB,MAAMJ,MAA8B,GAAGN,uBAAuB,CAACS,KAAK,CAACN,IAAI,CAAC;MAC1E,IAAI,CAACG,MAAM,EAAE;QACT,OAAOI,KAAK;MAChB;MACA,OAAOJ,MAAM,CAACK,WAAW,CAAC;QACtBvB,KAAK;QACLqB,KAAK;QACLC,KAAK;QACLE,gBAAgB,CAACL,SAAiB,EAA0B;UACxD,OAAOP,uBAAuB,CAACO,SAAS,CAAC,IAAIP,uBAAuB,CAAC,GAAG,CAAC;QAC7E,CAAC;QACDH;MACJ,CAAC,CAAC;IACN,CAAC;EACL,CAAC;EAED,MAAMgB,MAAM,GAAG,OACXzB,KAAgC,EAChCD,MAA6C,KAC5C;IACD,MAAM;MAAE2B,KAAK;MAAEzB,YAAY,EAAE0B;IAAoB,CAAC,GAAG5B,MAAM;IAE3D,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;IAEF,MAAMC,WAAW,GAAGP,KAAK,CAACQ,MAAM,KAAK,WAAW;IAEhD,MAAMC,MAAM,GAAGF,WAAW,GAAG,IAAI,GAAGP,KAAK,CAACS,MAAM;IAEhD,MAAMlC,YAAY,GAAGH,qBAAqB,CAAC;MACvCE,KAAK;MACLC,YAAY,EAAE0B;IAClB,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;IACQ,MAAMS,KAAK,GAAG,CACV5B,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfkC,MAAM;MACNG,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACd,KAAK,CAAC;MAChCe,IAAI,EAAE9C,UAAU,EAAE;MAClB+C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;IAAC,GACzC,EACFO,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfkC,MAAM;MACNG,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;MACzBL,IAAI,EAAE7C,gBAAgB,EAAE;MACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;IAAC,GACzC,CACL;;IAED;AACR;AACA;IACQ,IAAIgC,WAAW,EAAE;MACbG,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;QACfkC,MAAM;QACNG,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAS,4BAAsB,GAAE;QAC5BP,IAAI,EAAE7C,gBAAgB,EAAE;QACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;MAAC,GACzC,CACL;IACL;IAEA,IAAI;MACA,MAAM,IAAAgD,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOoD,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0CAA0C,EACxDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIC,KAAK,EAAEJ,EAAE;QACT1B;MACJ,CAAC,CACJ;IACL;IAEA,OAAOC,mBAAmB;EAC9B,CAAC;EAED,MAAM8B,kBAAkB,GAAG,OACvBzD,KAAgC,EAChCD,MAAyD,KACxD;IACD,MAAM;MAAE2B,KAAK;MAAEzB,YAAY,EAAE0B;IAAoB,CAAC,GAAG5B,MAAM;IAE3D,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;IAEF,MAAM/B,YAAY,GAAGH,qBAAqB,CAAC;MACvCG,YAAY,EAAE0B,mBAAmB;MACjC3B;IACJ,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;IACQ,MAAMoC,KAAK,GAAG,CACV5B,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfqC,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACvC,YAAY,CAAC;MACvCwC,IAAI,EAAE9C,UAAU,EAAE;MAClB+C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;IAAC,GACzC,EACFO,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfqC,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;MACzBL,IAAI,EAAE7C,gBAAgB,EAAE;MACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;IAAC,GACzC,CACL;IACD,IAAI;MACA,MAAM,IAAAgD,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOoD,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,6CAA6C,EAC3DF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIC,KAAK,EAAEJ,EAAE;QACT1B,KAAK;QACLzB;MACJ,CAAC,CACJ;IACL;IACA;AACR;AACA;IACQ,OAAO0B,mBAAmB;EAC9B,CAAC;EAED,MAAM+B,MAAM,GAAG,OACX1D,KAAgC,EAChCD,MAA6C,KAC5C;IACD,MAAM;MAAE2B,KAAK;MAAEzB,YAAY,EAAE0B;IAAoB,CAAC,GAAG5B,MAAM;IAC3D,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;IAEF,MAAMC,WAAW,GAAGP,KAAK,CAACQ,MAAM,KAAK,WAAW;IAChD,MAAMC,MAAM,GAAGF,WAAW,GAAG,IAAI,GAAGP,KAAK,CAACS,MAAM;IAEhD,MAAMC,KAAK,GAAG,EAAE;IAEhB,MAAMnC,YAAY,GAAGH,qBAAqB,CAAC;MACvCE,KAAK;MACLC,YAAY,EAAE0B;IAClB,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;IACQS,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfkC,MAAM;MACNG,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACvC,YAAY,CAAC;MACvCwC,IAAI,EAAE9C,UAAU,EAAE;MAClB+C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;IAAC,GACzC,CACL;IAED,IAAIgC,WAAW,EAAE;MACbG,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;QACfkC,MAAM;QACNG,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAS,4BAAsB,GAAE;QAC5BP,IAAI,EAAE5C,mBAAmB,EAAE;QAC3B6C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC5C,YAAY;MAAC,GACzC,CACL;IACL;;IAEA;AACR;AACA;IACQ,MAAM0D,kBAAkB,GAAG,MAAMC,0BAA0B,CAAC5D,KAAK,EAAE0B,KAAK,CAAC;IAEzE,IAAIiC,kBAAkB,IAAIA,kBAAkB,CAAC7B,EAAE,KAAKJ,KAAK,CAACI,EAAE,EAAE;MAC1DM,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;QACfkC,MAAM;QACNG,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;QACzBL,IAAI,EAAE7C,gBAAgB,EAAE;QACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;MAAC,GAClC,CACL;IACL;IAEA,IAAI;MACA,MAAM,IAAAuB,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;MACF,OAAO2B,mBAAmB;IAC9B,CAAC,CAAC,OAAOyB,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,yBAAyB,EACvCF,EAAE,CAACG,IAAI,IAAI,cAAc,EACzB;QACIC,KAAK,EAAEJ,EAAE;QACT1B,KAAK;QACLiC;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAME,WAAW,GAAG,OAChB7D,KAAgC,EAChCD,MAA6C,KAC5C;IACD,MAAM;MAAE2B;IAAM,CAAC,GAAG3B,MAAM;IAExB,MAAM+D,cAA8B,GAAG;MACnCtD,MAAM;MACNoB,YAAY,EAAE,IAAAC,wBAAkB,EAAC;QAC7BC,EAAE,EAAEJ,KAAK,CAACI,EAAE;QACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;QACpBC,MAAM,EAAEhC,KAAK,CAACgC;MAClB,CAAC,CAAC;MACF+B,OAAO,EAAE;QACLC,GAAG,EAAE;MACT;IACJ,CAAC;IAED,IAAIC,OAAO,GAAG,EAAE;IAChB,IAAI;MACAA,OAAO,GAAG,MAAM,IAAAC,eAAQ,EAACJ,cAAc,CAAC;IAC5C,CAAC,CAAC,OAAOV,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,6BAA6B,EAC3CF,EAAE,CAACG,IAAI,IAAI,wBAAwB,EACnC;QACIC,KAAK,EAAEJ,EAAE;QACT1B;MACJ,CAAC,CACJ;IACL;IACA,MAAMU,KAAK,GAAG6B,OAAO,CAACE,GAAG,CAACC,IAAI,IAAI;MAC9B,OAAO5D,MAAM,CAAC6D,WAAW,CAAC;QACtB/B,EAAE,EAAE8B,IAAI,CAAC9B,EAAE;QACXC,EAAE,EAAE6B,IAAI,CAAC7B;MACb,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAI;MACA,MAAM,IAAAU,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOoD,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,6BAA6B,EAC3CF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIC,KAAK,EAAEJ,EAAE;QACTxB,YAAY,EAAEkC,cAAc,CAAClC,YAAY;QACzCF;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAM4C,cAAc,GAAG,OACnBtE,KAAgC,EAChCD,MAAqD,KACpD;IACD,MAAM;MAAE2B,KAAK;MAAE6C,WAAW;MAAEZ,kBAAkB,EAAEa;IAA0B,CAAC,GAAGzE,MAAM;IACpF,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;IAEF,MAAMI,KAAK,GAAG,CACV5B,MAAM,CAAC6D,WAAW,CAAC;MACf/B,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACd,KAAK;IACnC,CAAC,CAAC,CACL;IAED,MAAM+C,qBAAqB,GAAG,MAAMC,6BAA6B,CAAC1E,KAAK,EAAE0B,KAAK,CAAC;;IAE/E;AACR;AACA;IACQ,IAAI+C,qBAAqB,IAAI/C,KAAK,CAACI,EAAE,KAAK2C,qBAAqB,CAAC3C,EAAE,EAAE;MAChEM,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6D,WAAW,CAAC;QACf/B,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAS,4BAAsB;MAC9B,CAAC,CAAC,CACL;IACL;IACA,IAAIwB,yBAAyB,EAAE;MAC3B,MAAMb,kBAAkB,GAAG7D,qBAAqB,CAAC;QAC7CG,YAAY,EAAEuE,yBAAyB;QACvCxE;MACJ,CAAC,CAAC;MACFoC,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRsB,kBAAkB;QACrBrB,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;QACzBL,IAAI,EAAE7C,gBAAgB,EAAE;QACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACc,kBAAkB;MAAC,GAC/C,CACL;IACL;IACA,IAAI;MACA,MAAM,IAAAV,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOoD,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CAACD,EAAE,CAACE,OAAO,EAAEF,EAAE,CAACG,IAAI,EAAE;QACvCC,KAAK,EAAEJ,EAAE;QACT1B,KAAK;QACL6C;MACJ,CAAC,CAAC;IACN;EACJ,CAAC;EAED,MAAMX,0BAA0B,GAAG,OAC/B5D,KAAgC,EAChCD,MAAwD,KACvD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACkD,0BAA0B,CAAC;MACvD5D,KAAK;MACL2E,GAAG,EAAE,CAAC5E,MAAM,CAAC+B,EAAE;IACnB,CAAC,CAAC;IACF,MAAMsC,IAAI,GAAGhC,KAAK,CAACwC,KAAK,EAAE,IAAI,IAAI;IAClC,IAAI,CAACR,IAAI,EAAE;MACP,OAAO,IAAI;IACf;IACA,OAAO/D,uBAAuB,CAAC;MAC3BJ,YAAY,EAAEmE,IAAI;MAClBpE;IACJ,CAAC,CAAC;EACN,CAAC;EACD,MAAM0E,6BAA6B,GAAG,OAClC1E,KAAgC,EAChCD,MAAwD,KACvD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACgE,6BAA6B,CAAC;MAC1D1E,KAAK;MACL2E,GAAG,EAAE,CAAC5E,MAAM,CAAC+B,EAAE;IACnB,CAAC,CAAC;IACF,MAAMsC,IAAI,GAAGhC,KAAK,CAACwC,KAAK,EAAE,IAAI,IAAI;IAClC,IAAI,CAACR,IAAI,EAAE;MACP,OAAO,IAAI;IACf;IACA,OAAO/D,uBAAuB,CAAC;MAC3BJ,YAAY,EAAEmE,IAAI;MAClBpE;IACJ,CAAC,CAAC;EACN,CAAC;EAED,MAAM6E,eAAe,GAAG,OACpB7E,KAAgC,EAChCD,MAAkD,KACjD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACmE,eAAe,CAAC;MAC5C7E,KAAK;MACL2E,GAAG,EAAE,CAAC5E,MAAM,CAAC+B,EAAE;IACnB,CAAC,CAAC;IACF,MAAMsC,IAAI,GAAGhC,KAAK,CAACwC,KAAK,EAAE,IAAI,IAAI;IAClC,IAAI,CAACR,IAAI,EAAE;MACP,OAAO,IAAI;IACf;IACA,OAAO/D,uBAAuB,CAAC;MAC3BJ,YAAY,EAAEmE,IAAI;MAClBpE;IACJ,CAAC,CAAC;EACN,CAAC;EAED,MAAM8E,YAAY,GAAG,OACjB9E,KAAgC,EAChCD,MAAmD,KAClD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACqE,oBAAoB,CAAC;MACjD/E,KAAK;MACL2E,GAAG,EAAE,CAAC5E,MAAM,CAAC+B,EAAE;IACnB,CAAC,CAAC;IAEF,OAAOM,KAAK,CAAC+B,GAAG,CAACC,IAAI,IAAI;MACrB,OAAO/D,uBAAuB,CAAC;QAC3BJ,YAAY,EAAEmE,IAAI;QAClBpE;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAED,MAAMgF,QAAQ,GAAG,OACbhF,KAAgC,EAChCD,MAA+C,KAC9C;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACmE,eAAe,CAAC;MAC5C7E,KAAK;MACL2E,GAAG,EAAE5E,MAAM,CAAC4E;IAChB,CAAC,CAAC;IAEF,OAAOvC,KAAK,CAAC+B,GAAG,CAACC,IAAI,IAAI;MACrB,OAAO/D,uBAAuB,CAAC;QAC3BJ,YAAY,EAAEmE,IAAI;QAClBpE;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAED,MAAMiF,cAAc,GAAG,OACnBjF,KAAgC,EAChCD,MAAqD,KACpD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACkD,0BAA0B,CAAC;MACvD5D,KAAK;MACL2E,GAAG,EAAE5E,MAAM,CAAC4E;IAChB,CAAC,CAAC;IAEF,OAAOvC,KAAK,CAAC+B,GAAG,CAACC,IAAI,IAAI;MACrB,OAAO/D,uBAAuB,CAAC;QAC3BJ,YAAY,EAAEmE,IAAI;QAClBpE;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAED,MAAMkF,iBAAiB,GAAG,OACtBlF,KAAgC,EAChCD,MAAwD,KACvD;IACD,MAAMqC,KAAK,GAAG,MAAM1B,WAAW,CAACgE,6BAA6B,CAAC;MAC1D1E,KAAK;MACL2E,GAAG,EAAE5E,MAAM,CAAC4E;IAChB,CAAC,CAAC;IAEF,OAAOvC,KAAK,CAAC+B,GAAG,CAACC,IAAI,IAAI;MACrB,OAAO/D,uBAAuB,CAAC;QAC3BJ,YAAY,EAAEmE,IAAI;QAClBpE;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAED,MAAMmF,mBAAmB,GAAG,OACxBnF,KAAgC,EAChCD,MAA0D,KACzD;IACD,MAAM;MAAEqF,OAAO;MAAEC;IAAQ,CAAC,GAAGtF,MAAM;IACnC,MAAMuF,WAA2B,GAAG;MAChC9E,MAAM;MACNoB,YAAY,EAAE,IAAAC,wBAAkB,EAAC;QAC7BG,MAAM,EAAEhC,KAAK,CAACgC,MAAM;QACpBD,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;QACpBD,EAAE,EAAEsD;MACR,CAAC,CAAC;MACFrB,OAAO,EAAE;QACLwB,EAAE,EAAG,OAAM,IAAAC,gBAAO,EAACH,OAAO,CAAE,EAAC;QAC7B;AAChB;AACA;QACgBI,OAAO,EAAE,CACL;UACIC,IAAI,EAAE,MAAM;UACZC,EAAE,EAAEhG,UAAU;QAClB,CAAC,EACD;UACI+F,IAAI,EAAE,SAAS;UACfH,EAAE,EAAEF;QACR,CAAC,CACJ;QACDO,OAAO,EAAE;MACb;IACJ,CAAC;IAED,IAAI;MACA,MAAMC,MAAM,GAAG,MAAM,IAAAC,eAAQ,EAAWR,WAAW,CAAC;MAEpD,MAAMrF,YAAY,GAAG,IAAA8F,oBAAW,EAACvF,MAAM,EAAEqF,MAAM,CAAC;MAChD,IAAI,CAAC5F,YAAY,EAAE;QACf,OAAO,IAAI;MACf;MACA,OAAOI,uBAAuB,CAAC;QAC3BJ,YAAY;QACZD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOoD,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,gDAAgD,EAC9DF,EAAE,CAACG,IAAI,IAAI,4BAA4B,8DAEhCxD,MAAM;QACTyD,KAAK,EAAEJ,EAAE;QACTxB,YAAY,EAAE0D,WAAW,CAAC1D,YAAY;QACtCmC,OAAO,EAAEuB,WAAW,CAACvB,OAAO;QAC5B/D;MAAK,GAEZ;IACL;EACJ,CAAC;EAED,MAAMgG,IAAI,GAAG,OACThG,KAAgC,EAChCD,MAA2C,KAC1C;IACD,MAAM;MACFkG,KAAK,EAAEC,YAAY,GAAG,EAAE;MACxBC,KAAK,EAAEC,YAAY;MACnBC,KAAK;MACLC,IAAI,EAAEC,MAAM;MACZnG,MAAM;MACNoG;IACJ,CAAC,GAAGzG,MAAM;IACV,MAAMkG,KAAK,GAAGC,YAAY,IAAI,CAAC,IAAIA,YAAY,IAAI,KAAK,GAAG,KAAK,GAAGA,YAAY;IAE/E,MAAMnF,IAAI,GAAGqF,YAAY,CAACK,SAAS,GAAG,GAAG,GAAG,GAAG;IAE/C,MAAM3C,cAA8B,GAAG;MACnCtD,MAAM;MACNoB,YAAY,EAAE,IAAAe,2BAAqB,EAAC3C,KAAK,EAAEe,IAAI,CAAC;MAChDgD,OAAO,EAAE;QACL2C,KAAK,EAAE,MAAM;QACb1C,GAAG,EAAE;MACT;IACJ,CAAC;IACD,IAAI2C,cAAiC,GAAG,EAAE;IAC1C,IAAI;MACAA,cAAc,GAAG,MAAM,IAAAzC,eAAQ,EAAkBJ,cAAc,CAAC;IACpE,CAAC,CAAC,OAAOV,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CAACD,EAAE,CAACE,OAAO,EAAE,qBAAqB,EAAE;QACrDE,KAAK,EAAEJ,EAAE;QACTxB,YAAY,EAAEkC,cAAc,CAAClC,YAAY;QACzCmC,OAAO,EAAED,cAAc,CAACC;MAC5B,CAAC,CAAC;IACN;IACA,IAAI4C,cAAc,CAACC,MAAM,KAAK,CAAC,EAAE;MAC7B,OAAO;QACHC,YAAY,EAAE,KAAK;QACnBC,UAAU,EAAE,CAAC;QACbC,MAAM,EAAE,IAAI;QACZ3E,KAAK,EAAE;MACX,CAAC;IACL;IACA,MAAM+D,KAAiC,mCAChCC,YAAY,CAClB;IACD,OAAOD,KAAK,CAAC,WAAW,CAAC;IACzB,OAAOA,KAAK,CAAC,QAAQ,CAAC;IACtB;AACR;AACA;AACA;IACQ,MAAMa,WAAW,GAAG,IAAAC,0BAAY,EAAC;MAC7BxG,OAAO;MACPL,MAAM,EAAEJ,KAAK,CAACI;IAClB,CAAC,CAAC;IAEF,MAAMmB,WAAW,GAAGH,8BAA8B,CAACpB,KAAK,CAAC;IACzD;AACR;AACA;AACA;AACA;IACQ,MAAMiE,OAAO,GAAG,MAAMiD,OAAO,CAACC,GAAG,CAC7BR,cAAc,CAACxC,GAAG,CAAC,MAAMlE,YAAY,IAAI;MACrC,MAAMyB,KAAK,GAAGrB,uBAAuB,CAAC;QAClCJ,YAAY;QACZD;MACJ,CAAC,CAAC;MAEF,KAAK,MAAMqB,KAAK,IAAIrB,KAAK,CAACI,MAAM,EAAE;QAC9BsB,KAAK,CAACxB,MAAM,CAACmB,KAAK,CAAC+F,OAAO,CAAC,GAAG,MAAM7F,WAAW,CAC3CF,KAAK,EACLK,KAAK,CAACxB,MAAM,CAACmB,KAAK,CAAC+F,OAAO,CAAC,CAC9B;MACL;MAEA,OAAO1F,KAAK;IAChB,CAAC,CAAC,CACL;IACD;AACR;AACA;AACA;IACQ,MAAM2F,aAAa,GAAG,IAAAC,iBAAM,EAAC;MACzBlF,KAAK,EAAE6B,OAAO;MACdkC,KAAK;MACL1F,OAAO;MACPL,MAAM,EAAE4G,WAAW;MACnBO,cAAc,EAAE;QACZC,IAAI,EAAEhB,MAAM;QACZpG,MAAM,EAAEA,MAAM,IAAI;MACtB;IACJ,CAAC,CAAC;IAEF,MAAM0G,UAAU,GAAGO,aAAa,CAACT,MAAM;;IAEvC;AACR;AACA;AACA;IACQ,MAAMa,WAAW,GAAG,IAAAnB,eAAI,EAAC;MACrBtG,KAAK;MACLS,OAAO;MACP2B,KAAK,EAAEiF,aAAa;MACpBf,IAAI,EAAEC,MAAM;MACZnG,MAAM,EAAE4G;IACZ,CAAC,CAAC;IAEF,MAAMU,KAAK,GAAGC,QAAQ,CAAE,IAAAC,oBAAY,EAACvB,KAAK,CAAC,IAAe,GAAG,CAAC,IAAI,CAAC;IACnE,MAAMQ,YAAY,GAAGC,UAAU,GAAGY,KAAK,GAAGzB,KAAK;IAC/C,MAAM4B,GAAG,GAAG5B,KAAK,GAAGa,UAAU,GAAGY,KAAK,GAAGzB,KAAK,GAAG6B,SAAS,GAAGJ,KAAK,GAAGzB,KAAK;IAC1E,MAAM8B,WAAW,GAAGN,WAAW,CAACO,KAAK,CAACN,KAAK,EAAEG,GAAG,CAAC;IACjD;AACR;AACA;AACA;IACQ,MAAMd,MAAM,GAAGD,UAAU,GAAGY,KAAK,GAAGzB,KAAK,GAAG,IAAAgC,oBAAY,EAAE,GAAEP,KAAK,GAAGzB,KAAM,EAAC,CAAC,GAAG,IAAI;IACnF,OAAO;MACHY,YAAY;MACZC,UAAU;MACVC,MAAM;MACN3E,KAAK,EAAE,IAAA8F,qBAAY,EAAC1H,MAAM,EAAEuH,WAAW;IAC3C,CAAC;EACL,CAAC;EAED,MAAMI,GAAG,GAAG,OACRnI,KAAgC,EAChCD,MAA0C,KACzC;IACD,MAAM;MAAEqC;IAAM,CAAC,GAAG,MAAM4D,IAAI,CAAChG,KAAK,8DAC3BD,MAAM;MACTkG,KAAK,EAAE;IAAC,GACV;IACF,OAAO7D,KAAK,CAACwC,KAAK,EAAE,IAAI,IAAI;EAChC,CAAC;EAED,MAAMwD,OAAO,GAAG,OACZpI,KAAgC,EAChCD,MAA8C,KAC7C;IACD,MAAM;MAAE2B,KAAK;MAAEzB,YAAY,EAAE0B;IAAoB,CAAC,GAAG5B,MAAM;IAE3D,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;;IAEF;AACR;AACA;IACQ,MAAMwC,yBAAyB,GAAG,MAAMZ,0BAA0B,CAAC5D,KAAK,EAAE0B,KAAK,CAAC;IAChF,MAAM2G,4BAA4B,GAAG,MAAM3D,6BAA6B,CAAC1E,KAAK,EAAE0B,KAAK,CAAC;IAEtF,MAAMzB,YAAY,GAAGH,qBAAqB,CAAC;MACvCE,KAAK;MACLC,YAAY,EAAE0B;IAClB,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,MAAMS,KAAK,GAAG,CACV5B,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfqC,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACd,KAAK,CAAC;MAChCe,IAAI,EAAE9C,UAAU,EAAE;MAClB+C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;IAAC,GAClC,EACFlB,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfqC,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAS,4BAAsB,GAAE;MAC5BP,IAAI,EAAE5C,mBAAmB,EAAE;MAC3B6C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;IAAC,GAClC,CACL;IACD,IAAI8C,yBAAyB,IAAI9C,KAAK,CAACI,EAAE,KAAK0C,yBAAyB,CAAC1C,EAAE,EAAE;MACxEM,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;QACfqC,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;QACzBL,IAAI,EAAE7C,gBAAgB,EAAE;QACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;MAAC,GAClC,CACL;IACL;IACA,IAAI2G,4BAA4B,IAAIA,4BAA4B,CAACvG,EAAE,KAAKJ,KAAK,CAACI,EAAE,EAAE;MAC9E,MAAM2C,qBAAqB,GAAG3E,qBAAqB,CAAC;QAChDG,YAAY,EAAEoI,4BAA4B;QAC1CrI;MACJ,CAAC,CAAC;MACFoC,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRoC,qBAAqB;QACxBnC,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACiC,qBAAqB,CAAC;QAChDhC,IAAI,EAAE9C,UAAU,EAAE;QAClBuC,MAAM,EAAEoG,2BAAoB,CAACC,WAAW;QACxC7F,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAAC4B,qBAAqB;MAAC,GAClD,CACL;IACL;IAEA,IAAI;MACA,MAAM,IAAAxB,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;MACF,OAAO2B,mBAAmB;IAC9B,CAAC,CAAC,OAAOyB,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,yCAAyC,EACvDF,EAAE,CAACG,IAAI,IAAI,eAAe,EAC1B;QACI7B,KAAK;QACLiC,kBAAkB,EAAEa,yBAAyB;QAC7CC,qBAAqB,EAAE4D;MAC3B,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMG,SAAS,GAAG,OACdxI,KAAgC,EAChCD,MAAgD,KAC/C;IACD,MAAM;MAAE2B,KAAK;MAAEzB,YAAY,EAAE0B;IAAoB,CAAC,GAAG5B,MAAM;IAE3D,MAAM6B,YAAY,GAAG,IAAAC,wBAAkB,EAAC;MACpCC,EAAE,EAAEJ,KAAK,CAACI,EAAE;MACZC,MAAM,EAAE/B,KAAK,CAAC+B,MAAM;MACpBC,MAAM,EAAEhC,KAAK,CAACgC;IAClB,CAAC,CAAC;IAEF,MAAM/B,YAAY,GAAGH,qBAAqB,CAAC;MACvCG,YAAY,EAAE0B,mBAAmB;MACjC3B;IACJ,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;AACA;IACQ,MAAMoC,KAAK,GAAG,CACV5B,MAAM,CAAC6D,WAAW,CAAC;MACf/B,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAS,4BAAsB;IAC9B,CAAC,CAAC,EACFxC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;MACfqC,EAAE,EAAEV,YAAY;MAChBW,EAAE,EAAE,IAAAC,2BAAqB,EAACd,KAAK,CAAC;MAChCe,IAAI,EAAE9C,UAAU,EAAE;MAClB+C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;MAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;IAAC,GAClC,CACL;;IAED;AACR;AACA;IACQ,MAAMiC,kBAAkB,GAAG,MAAMC,0BAA0B,CAAC5D,KAAK,EAAE0B,KAAK,CAAC;IAEzE,IAAIiC,kBAAkB,IAAIjC,KAAK,CAACI,EAAE,KAAK6B,kBAAkB,CAAC7B,EAAE,EAAE;MAC1DM,KAAK,CAACW,IAAI,CACNvC,MAAM,CAAC6B,QAAQ,6DACRpC,YAAY;QACfqC,EAAE,EAAEV,YAAY;QAChBW,EAAE,EAAE,IAAAO,yBAAmB,GAAE;QACzBL,IAAI,EAAE7C,gBAAgB,EAAE;QACxB8C,OAAO,EAAE,IAAAC,2BAAqB,EAAC3C,KAAK,EAAE,GAAG,CAAC;QAC1C4C,OAAO,EAAE,IAAAC,sBAAgB,EAACnB,KAAK;MAAC,GAClC,CACL;IACL;IAEA,IAAI;MACA,MAAM,IAAAuB,yBAAa,EAAC;QAChBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBd;MACJ,CAAC,CAAC;MACF1B,WAAW,CAACyC,QAAQ,CAAC;QACjBnD;MACJ,CAAC,CAAC;MACF,OAAO2B,mBAAmB;IAC9B,CAAC,CAAC,OAAOyB,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,oCAAoC,EAClDF,EAAE,CAACG,IAAI,IAAI,iBAAiB,EAC5B;QACI7B,KAAK;QACLzB;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,OAAO;IACHwB,MAAM;IACNgC,kBAAkB;IAClBC,MAAM;IACN+E,MAAM,EAAE5E,WAAW;IACnBS,cAAc;IACda,mBAAmB;IACnBD,iBAAiB;IACjBD,cAAc;IACdD,QAAQ;IACRH,eAAe;IACfH,6BAA6B;IAC7Bd,0BAA0B;IAC1BuE,GAAG;IACHrD,YAAY;IACZsD,OAAO;IACPpC,IAAI;IACJwC;EACJ,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["createType","createLatestType","createPublishedType","convertToStorageEntry","params","model","storageEntry","values","convertValueKeyToStorage","fields","convertFromStorageEntry","convertValueKeyFromStorage","createEntriesStorageOperations","entity","plugins","storageOperationsCmsModelPlugin","getStorageOperationsCmsModelPlugin","oneByType","StorageOperationsCmsModelPlugin","type","getStorageOperationsModel","plugin","getModel","dataLoaders","DataLoadersHandler","storageTransformPlugins","byType","StorageTransformPlugin","reduce","collection","fieldType","createStorageTransformCallable","field","value","fromStorage","getStoragePlugin","create","initialModel","entry","initialStorageEntry","partitionKey","createPartitionKey","id","locale","tenant","isPublished","status","locked","items","putBatch","PK","SK","createRevisionSortKey","TYPE","GSI1_PK","createGSIPartitionKey","GSI1_SK","createGSISortKey","createLatestSortKey","push","createPublishedSortKey","batchWriteAll","table","clearAll","ex","WebinyError","message","code","error","createRevisionFrom","update","latestStorageEntry","getLatestRevisionByEntryId","deleteEntry","queryAllParams","options","gte","records","queryAll","map","item","deleteBatch","deleteRevision","latestEntry","initialLatestStorageEntry","publishedStorageEntry","getPublishedRevisionByEntryId","ids","shift","getRevisionById","getRevisions","getAllEntryRevisions","getByIds","getLatestByIds","getPublishedByIds","getPreviousRevision","entryId","version","queryParams","lt","zeroPad","filters","attr","eq","reverse","result","queryOne","cleanupItem","list","limit","initialLimit","where","initialWhere","after","sort","sortBy","search","published","index","storageEntries","length","hasMoreItems","totalCount","cursor","modelFields","createFields","Promise","all","fieldId","filteredItems","filter","fullTextSearch","term","sortedItems","start","parseInt","decodeCursor","end","undefined","slicedItems","slice","encodeCursor","cleanupItems","get","publish","initialPublishedStorageEntry","CONTENT_ENTRY_STATUS","UNPUBLISHED","unpublish","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { DataLoadersHandler } from \"./dataLoaders\";\nimport {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryStorageOperations,\n CmsModel,\n CmsStorageEntry,\n CONTENT_ENTRY_STATUS,\n StorageOperationsCmsModel\n} from \"@webiny/api-headless-cms/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport {\n createGSIPartitionKey,\n createGSISortKey,\n createLatestSortKey,\n createPartitionKey,\n createPublishedSortKey,\n createRevisionSortKey\n} from \"~/operations/entry/keys\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport {\n queryAll,\n QueryAllParams,\n queryOne,\n QueryOneParams\n} from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { decodeCursor, encodeCursor } from \"@webiny/utils/cursor\";\nimport { zeroPad } from \"@webiny/utils/zeroPad\";\nimport { StorageOperationsCmsModelPlugin, StorageTransformPlugin } from \"@webiny/api-headless-cms\";\nimport { FilterItemFromStorage } from \"./filtering/types\";\nimport { createFields } from \"~/operations/entry/filtering/createFields\";\nimport { filter, sort } from \"~/operations/entry/filtering\";\n\nconst createType = (): string => {\n return \"cms.entry\";\n};\nconst createLatestType = (): string => {\n return `${createType()}.l`;\n};\nconst createPublishedType = (): string => {\n return `${createType()}.p`;\n};\n\ninterface ConvertStorageEntryParams {\n storageEntry: CmsStorageEntry;\n model: StorageOperationsCmsModel;\n}\nconst convertToStorageEntry = (params: ConvertStorageEntryParams): CmsStorageEntry => {\n const { model, storageEntry } = params;\n\n const values = model.convertValueKeyToStorage({\n fields: model.fields,\n values: storageEntry.values\n });\n return {\n ...storageEntry,\n values\n };\n};\n\nconst convertFromStorageEntry = (params: ConvertStorageEntryParams): CmsStorageEntry => {\n const { model, storageEntry } = params;\n\n const values = model.convertValueKeyFromStorage({\n fields: model.fields,\n values: storageEntry.values\n });\n return {\n ...storageEntry,\n values\n };\n};\n\nexport interface CreateEntriesStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createEntriesStorageOperations = (\n params: CreateEntriesStorageOperationsParams\n): CmsEntryStorageOperations => {\n const { entity, plugins } = params;\n\n let storageOperationsCmsModelPlugin: StorageOperationsCmsModelPlugin | undefined;\n const getStorageOperationsCmsModelPlugin = () => {\n if (storageOperationsCmsModelPlugin) {\n return storageOperationsCmsModelPlugin;\n }\n storageOperationsCmsModelPlugin = plugins.oneByType<StorageOperationsCmsModelPlugin>(\n StorageOperationsCmsModelPlugin.type\n );\n return storageOperationsCmsModelPlugin;\n };\n\n const getStorageOperationsModel = (model: CmsModel): StorageOperationsCmsModel => {\n const plugin = getStorageOperationsCmsModelPlugin();\n return plugin.getModel(model);\n };\n\n const dataLoaders = new DataLoadersHandler({\n entity\n });\n\n const storageTransformPlugins = plugins\n .byType<StorageTransformPlugin>(StorageTransformPlugin.type)\n .reduce((collection, plugin) => {\n collection[plugin.fieldType] = plugin;\n return collection;\n }, {} as Record<string, StorageTransformPlugin>);\n\n const createStorageTransformCallable = (\n model: StorageOperationsCmsModel\n ): FilterItemFromStorage => {\n return (field, value) => {\n const plugin: StorageTransformPlugin = storageTransformPlugins[field.type];\n if (!plugin) {\n return value;\n }\n return plugin.fromStorage({\n model,\n field,\n value,\n getStoragePlugin(fieldType: string): StorageTransformPlugin {\n return storageTransformPlugins[fieldType] || storageTransformPlugins[\"*\"];\n },\n plugins\n });\n };\n };\n\n const create: CmsEntryStorageOperations[\"create\"] = async (initialModel, params) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const isPublished = entry.status === \"published\";\n\n const locked = isPublished ? true : entry.locked;\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to:\n * - create new main entry item\n * - create new or update the latest entry item\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n }),\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n ];\n\n /**\n * We need to create published entry if\n */\n if (isPublished) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert data into the DynamoDB.\",\n ex.code || \"CREATE_ENTRY_ERROR\",\n {\n error: ex,\n entry\n }\n );\n }\n\n return initialStorageEntry;\n };\n\n const createRevisionFrom: CmsEntryStorageOperations[\"createRevisionFrom\"] = async (\n initialModel,\n params\n ) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const storageEntry = convertToStorageEntry({\n storageEntry: initialStorageEntry,\n model\n });\n /**\n * We need to:\n * - create the main entry item\n * - update the last entry item to a current one\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(storageEntry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n ];\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create revision from given entry.\",\n ex.code || \"CREATE_REVISION_ERROR\",\n {\n error: ex,\n entry,\n storageEntry\n }\n );\n }\n /**\n * There are no modifications on the entry created so just return the data.\n */\n return initialStorageEntry;\n };\n\n const update: CmsEntryStorageOperations[\"update\"] = async (initialModel, params) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const isPublished = entry.status === \"published\";\n const locked = isPublished ? true : entry.locked;\n\n const items = [];\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to:\n * - update the current entry\n * - update the latest entry if the current entry is the latest one\n */\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createRevisionSortKey(storageEntry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n\n if (isPublished) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createPublishedType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(storageEntry)\n })\n );\n }\n\n /**\n * We need the latest entry to update it as well if necessary.\n */\n const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n\n if (latestStorageEntry && latestStorageEntry.id === entry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n locked,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update entry.\",\n ex.code || \"UPDATE_ERROR\",\n {\n error: ex,\n entry,\n latestStorageEntry\n }\n );\n }\n };\n\n const deleteEntry: CmsEntryStorageOperations[\"delete\"] = async (initialModel, params) => {\n const { entry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n }),\n options: {\n gte: \" \"\n }\n };\n\n let records = [];\n try {\n records = await queryAll(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all records.\",\n ex.code || \"LOAD_ALL_RECORDS_ERROR\",\n {\n error: ex,\n entry\n }\n );\n }\n const items = records.map(item => {\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the entry.\",\n ex.code || \"DELETE_ENTRY_ERROR\",\n {\n error: ex,\n partitionKey: queryAllParams.partitionKey,\n entry\n }\n );\n }\n };\n\n const deleteRevision: CmsEntryStorageOperations[\"deleteRevision\"] = async (\n initialModel,\n params\n ) => {\n const { entry, latestEntry, latestStorageEntry: initialLatestStorageEntry } = params;\n\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createRevisionSortKey(entry)\n })\n ];\n\n const publishedStorageEntry = await getPublishedRevisionByEntryId(model, entry);\n\n /**\n * If revision we are deleting is the published one as well, we need to delete those records as well.\n */\n if (publishedStorageEntry && entry.id === publishedStorageEntry.id) {\n items.push(\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n if (initialLatestStorageEntry) {\n const latestStorageEntry = convertToStorageEntry({\n storageEntry: initialLatestStorageEntry,\n model\n });\n items.push(\n entity.putBatch({\n ...latestStorageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(latestStorageEntry)\n })\n );\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code, {\n error: ex,\n entry,\n latestEntry\n });\n }\n };\n\n const getLatestRevisionByEntryId: CmsEntryStorageOperations[\"getLatestRevisionByEntryId\"] =\n async (initialModel, params) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getLatestRevisionByEntryId({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n const getPublishedRevisionByEntryId: CmsEntryStorageOperations[\"getPublishedRevisionByEntryId\"] =\n async (initialModel, params) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getPublishedRevisionByEntryId({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n\n const getRevisionById: CmsEntryStorageOperations[\"getRevisionById\"] = async (\n initialModel,\n params\n ) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getRevisionById({\n model,\n ids: [params.id]\n });\n const item = items.shift() || null;\n if (!item) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n };\n\n const getRevisions: CmsEntryStorageOperations[\"getRevisions\"] = async (\n initialModel,\n params\n ) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getAllEntryRevisions({\n model,\n ids: [params.id]\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getByIds: CmsEntryStorageOperations[\"getByIds\"] = async (initialModel, params) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getRevisionById({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getLatestByIds: CmsEntryStorageOperations[\"getLatestByIds\"] = async (\n initialModel,\n params\n ) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getLatestRevisionByEntryId({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getPublishedByIds: CmsEntryStorageOperations[\"getPublishedByIds\"] = async (\n initialModel,\n params\n ) => {\n const model = getStorageOperationsModel(initialModel);\n\n const items = await dataLoaders.getPublishedRevisionByEntryId({\n model,\n ids: params.ids\n });\n\n return items.map(item => {\n return convertFromStorageEntry({\n storageEntry: item,\n model\n });\n });\n };\n\n const getPreviousRevision: CmsEntryStorageOperations[\"getPreviousRevision\"] = async (\n initialModel,\n params\n ) => {\n const model = getStorageOperationsModel(initialModel);\n\n const { entryId, version } = params;\n const queryParams: QueryOneParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant: model.tenant,\n locale: model.locale,\n id: entryId\n }),\n options: {\n lt: `REV#${zeroPad(version)}`,\n /**\n * We need to have extra checks because DynamoDB will return published or latest record if there is no REV# record.\n */\n filters: [\n {\n attr: \"TYPE\",\n eq: createType()\n },\n {\n attr: \"version\",\n lt: version\n }\n ],\n reverse: true\n }\n };\n\n try {\n const result = await queryOne<CmsEntry>(queryParams);\n\n const storageEntry = cleanupItem(entity, result);\n if (!storageEntry) {\n return null;\n }\n return convertFromStorageEntry({\n storageEntry,\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get previous version of given entry.\",\n ex.code || \"GET_PREVIOUS_VERSION_ERROR\",\n {\n ...params,\n error: ex,\n partitionKey: queryParams.partitionKey,\n options: queryParams.options,\n model\n }\n );\n }\n };\n\n const list: CmsEntryStorageOperations[\"list\"] = async (initialModel, params) => {\n const model = getStorageOperationsModel(initialModel);\n\n const {\n limit: initialLimit = 10,\n where: initialWhere,\n after,\n sort: sortBy,\n fields,\n search\n } = params;\n const limit = initialLimit <= 0 || initialLimit >= 10000 ? 10000 : initialLimit;\n\n const type = initialWhere.published ? \"P\" : \"L\";\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createGSIPartitionKey(model, type),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n let storageEntries: CmsStorageEntry[] = [];\n try {\n storageEntries = await queryAll<CmsStorageEntry>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(ex.message, \"QUERY_ENTRIES_ERROR\", {\n error: ex,\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n });\n }\n if (storageEntries.length === 0) {\n return {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null,\n items: []\n };\n }\n const where: Partial<CmsEntryListWhere> = {\n ...initialWhere\n };\n delete where[\"published\"];\n delete where[\"latest\"];\n /**\n * We need an object containing field, transformers and paths.\n * Just build it here and pass on into other methods that require it to avoid mapping multiple times.\n */\n const modelFields = createFields({\n plugins,\n fields: model.fields\n });\n\n const fromStorage = createStorageTransformCallable(model);\n /**\n * Let's transform records from storage ones to regular ones, so we do not need to do it later.\n *\n * This is always being done, but at least its in parallel.\n */\n const records = await Promise.all(\n storageEntries.map(async storageEntry => {\n const entry = convertFromStorageEntry({\n storageEntry,\n model\n });\n\n for (const field of model.fields) {\n entry.values[field.fieldId] = await fromStorage(\n field,\n entry.values[field.fieldId]\n );\n }\n\n return entry as CmsEntry;\n })\n );\n /**\n * Filter the read items via the code.\n * It will build the filters out of the where input and transform the values it is using.\n */\n const filteredItems = filter({\n items: records,\n where,\n plugins,\n fields: modelFields,\n fullTextSearch: {\n term: search,\n fields: fields || []\n }\n });\n\n const totalCount = filteredItems.length;\n\n /**\n * Sorting is also done via the code.\n * It takes the sort input and sorts by it via the lodash sortBy method.\n */\n const sortedItems = sort({\n model,\n plugins,\n items: filteredItems,\n sort: sortBy,\n fields: modelFields\n });\n\n const start = parseInt((decodeCursor(after) as string) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const slicedItems = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = totalCount > start + limit ? encodeCursor(`${start + limit}`) : null;\n return {\n hasMoreItems,\n totalCount,\n cursor,\n items: cleanupItems(entity, slicedItems)\n };\n };\n\n const get: CmsEntryStorageOperations[\"get\"] = async (initialModel, params) => {\n const model = getStorageOperationsModel(initialModel);\n\n const { items } = await list(model, {\n ...params,\n limit: 1\n });\n return items.shift() || null;\n };\n\n const publish: CmsEntryStorageOperations[\"publish\"] = async (initialModel, params) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n /**\n * We need the latest and published entries to see if something needs to be updated alongside the publishing one.\n */\n const initialLatestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n const initialPublishedStorageEntry = await getPublishedRevisionByEntryId(model, entry);\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n /**\n * We need to update:\n * - current entry revision sort key\n * - published sort key\n * - the latest sort key - if entry updated is actually latest\n * - previous published entry to unpublished status - if any previously published entry\n */\n const items = [\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(entry)\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createPublishedSortKey(),\n TYPE: createPublishedType(),\n GSI1_PK: createGSIPartitionKey(model, \"P\"),\n GSI1_SK: createGSISortKey(entry)\n })\n ];\n if (initialLatestStorageEntry && entry.id === initialLatestStorageEntry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n if (initialPublishedStorageEntry && initialPublishedStorageEntry.id !== entry.id) {\n const publishedStorageEntry = convertToStorageEntry({\n storageEntry: initialPublishedStorageEntry,\n model\n });\n items.push(\n entity.putBatch({\n ...publishedStorageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(publishedStorageEntry),\n TYPE: createType(),\n status: CONTENT_ENTRY_STATUS.UNPUBLISHED,\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(publishedStorageEntry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not execute the publishing batch.\",\n ex.code || \"PUBLISH_ERROR\",\n {\n entry,\n latestStorageEntry: initialLatestStorageEntry,\n publishedStorageEntry: initialPublishedStorageEntry\n }\n );\n }\n };\n\n const unpublish: CmsEntryStorageOperations[\"unpublish\"] = async (initialModel, params) => {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = getStorageOperationsModel(initialModel);\n\n const partitionKey = createPartitionKey({\n id: entry.id,\n locale: model.locale,\n tenant: model.tenant\n });\n\n const storageEntry = convertToStorageEntry({\n storageEntry: initialStorageEntry,\n model\n });\n /**\n * We need to:\n * - delete currently published entry\n * - update current entry revision with new data\n * - update the latest entry status - if entry being unpublished is latest\n */\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n }),\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createRevisionSortKey(entry),\n TYPE: createType(),\n GSI1_PK: createGSIPartitionKey(model, \"A\"),\n GSI1_SK: createGSISortKey(entry)\n })\n ];\n\n /**\n * We need the latest entry to see if something needs to be updated alongside the unpublishing one.\n */\n const latestStorageEntry = await getLatestRevisionByEntryId(model, entry);\n\n if (latestStorageEntry && entry.id === latestStorageEntry.id) {\n items.push(\n entity.putBatch({\n ...storageEntry,\n PK: partitionKey,\n SK: createLatestSortKey(),\n TYPE: createLatestType(),\n GSI1_PK: createGSIPartitionKey(model, \"L\"),\n GSI1_SK: createGSISortKey(entry)\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n dataLoaders.clearAll({\n model\n });\n return initialStorageEntry;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not execute unpublish batch.\",\n ex.code || \"UNPUBLISH_ERROR\",\n {\n entry,\n storageEntry\n }\n );\n }\n };\n\n return {\n create,\n createRevisionFrom,\n update,\n delete: deleteEntry,\n deleteRevision,\n getPreviousRevision,\n getPublishedByIds,\n getLatestByIds,\n getByIds,\n getRevisionById,\n getPublishedRevisionByEntryId,\n getLatestRevisionByEntryId,\n get,\n getRevisions,\n publish,\n list,\n unpublish\n };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms-ddb",
3
- "version": "0.0.0-unstable.b02d94bba0",
3
+ "version": "0.0.0-unstable.b14eaecf38",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "@webiny/api-headless-cms",
@@ -22,11 +22,11 @@
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
24
  "@babel/runtime": "7.20.13",
25
- "@webiny/api-headless-cms": "0.0.0-unstable.b02d94bba0",
26
- "@webiny/db-dynamodb": "0.0.0-unstable.b02d94bba0",
27
- "@webiny/error": "0.0.0-unstable.b02d94bba0",
28
- "@webiny/handler-db": "0.0.0-unstable.b02d94bba0",
29
- "@webiny/utils": "0.0.0-unstable.b02d94bba0",
25
+ "@webiny/api-headless-cms": "0.0.0-unstable.b14eaecf38",
26
+ "@webiny/db-dynamodb": "0.0.0-unstable.b14eaecf38",
27
+ "@webiny/error": "0.0.0-unstable.b14eaecf38",
28
+ "@webiny/handler-db": "0.0.0-unstable.b14eaecf38",
29
+ "@webiny/utils": "0.0.0-unstable.b14eaecf38",
30
30
  "aws-sdk": "2.1310.0",
31
31
  "dataloader": "2.2.1",
32
32
  "dot-prop": "6.0.1",
@@ -39,9 +39,9 @@
39
39
  "@babel/core": "^7.19.3",
40
40
  "@babel/preset-env": "^7.19.4",
41
41
  "@types/jsonpack": "^1.1.0",
42
- "@webiny/cli": "^0.0.0-unstable.b02d94bba0",
43
- "@webiny/plugins": "^0.0.0-unstable.b02d94bba0",
44
- "@webiny/project-utils": "^0.0.0-unstable.b02d94bba0",
42
+ "@webiny/cli": "^0.0.0-unstable.b14eaecf38",
43
+ "@webiny/plugins": "^0.0.0-unstable.b14eaecf38",
44
+ "@webiny/project-utils": "^0.0.0-unstable.b14eaecf38",
45
45
  "jest": "^28.1.0",
46
46
  "jest-dynalite": "^3.2.0",
47
47
  "jest-environment-node": "^27.2.4",
@@ -56,5 +56,5 @@
56
56
  "build": "yarn webiny run build",
57
57
  "watch": "yarn webiny run watch"
58
58
  },
59
- "gitHead": "b02d94bba01eb4d2b17732279216fbc1c7ab5cd5"
59
+ "gitHead": "b14eaecf387253ed23cb96f8d31b7d16b5061936"
60
60
  }