@webiny/api-headless-cms-ddb 0.0.0-mt-3 → 0.0.0-unstable.3386f66516

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/definitions/entry.d.ts +2 -1
  2. package/definitions/entry.js +6 -7
  3. package/definitions/entry.js.map +1 -0
  4. package/definitions/group.d.ts +2 -1
  5. package/definitions/group.js +3 -7
  6. package/definitions/group.js.map +1 -0
  7. package/definitions/model.d.ts +2 -1
  8. package/definitions/model.js +8 -7
  9. package/definitions/model.js.map +1 -0
  10. package/definitions/settings.d.ts +2 -1
  11. package/definitions/settings.js +3 -7
  12. package/definitions/settings.js.map +1 -0
  13. package/definitions/system.d.ts +2 -1
  14. package/definitions/system.js +3 -7
  15. package/definitions/system.js.map +1 -0
  16. package/definitions/table.d.ts +2 -1
  17. package/definitions/table.js.map +1 -0
  18. package/dynamoDb/index.d.ts +1 -1
  19. package/dynamoDb/index.js +6 -10
  20. package/dynamoDb/index.js.map +1 -0
  21. package/dynamoDb/path/plainObject.d.ts +2 -3
  22. package/dynamoDb/path/plainObject.js +29 -22
  23. package/dynamoDb/path/plainObject.js.map +1 -0
  24. package/dynamoDb/storage/date.d.ts +3 -3
  25. package/dynamoDb/storage/date.js +90 -46
  26. package/dynamoDb/storage/date.js.map +1 -0
  27. package/dynamoDb/storage/longText.d.ts +7 -4
  28. package/dynamoDb/storage/longText.js +79 -54
  29. package/dynamoDb/storage/longText.js.map +1 -0
  30. package/dynamoDb/storage/richText.d.ts +2 -8
  31. package/dynamoDb/storage/richText.js +70 -67
  32. package/dynamoDb/storage/richText.js.map +1 -0
  33. package/dynamoDb/transformValue/datetime.d.ts +4 -2
  34. package/dynamoDb/transformValue/datetime.js +31 -26
  35. package/dynamoDb/transformValue/datetime.js.map +1 -0
  36. package/index.d.ts +1 -0
  37. package/index.js +54 -23
  38. package/index.js.map +1 -0
  39. package/operations/entry/dataLoaders.d.ts +12 -8
  40. package/operations/entry/dataLoaders.js +31 -13
  41. package/operations/entry/dataLoaders.js.map +1 -0
  42. package/operations/entry/filtering/createExpressions.d.ts +26 -0
  43. package/operations/entry/filtering/createExpressions.js +213 -0
  44. package/operations/entry/filtering/createExpressions.js.map +1 -0
  45. package/operations/entry/filtering/createFields.d.ts +14 -0
  46. package/operations/entry/filtering/createFields.js +123 -0
  47. package/operations/entry/filtering/createFields.js.map +1 -0
  48. package/operations/entry/filtering/extractSort.d.ts +17 -0
  49. package/operations/entry/filtering/extractSort.js +77 -0
  50. package/operations/entry/filtering/extractSort.js.map +1 -0
  51. package/operations/entry/filtering/filter.d.ts +15 -0
  52. package/operations/entry/filtering/filter.js +178 -0
  53. package/operations/entry/filtering/filter.js.map +1 -0
  54. package/operations/entry/filtering/fullTextSearch.d.ts +14 -0
  55. package/operations/entry/filtering/fullTextSearch.js +60 -0
  56. package/operations/entry/filtering/fullTextSearch.js.map +1 -0
  57. package/operations/entry/filtering/getValue.d.ts +5 -0
  58. package/operations/entry/filtering/getValue.js +81 -0
  59. package/operations/entry/filtering/getValue.js.map +1 -0
  60. package/operations/entry/filtering/index.d.ts +2 -0
  61. package/operations/entry/filtering/index.js +21 -0
  62. package/operations/entry/filtering/index.js.map +1 -0
  63. package/operations/entry/filtering/mapPlugins.d.ts +8 -0
  64. package/operations/entry/filtering/mapPlugins.js +39 -0
  65. package/operations/entry/filtering/mapPlugins.js.map +1 -0
  66. package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +2 -0
  67. package/operations/entry/filtering/plugins/defaultFilterCreate.js +48 -0
  68. package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +1 -0
  69. package/operations/entry/filtering/plugins/index.d.ts +1 -0
  70. package/operations/entry/filtering/plugins/index.js +18 -0
  71. package/operations/entry/filtering/plugins/index.js.map +1 -0
  72. package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +2 -0
  73. package/operations/entry/filtering/plugins/objectFilterCreate.js +107 -0
  74. package/operations/entry/filtering/plugins/objectFilterCreate.js.map +1 -0
  75. package/operations/entry/filtering/plugins/refFilterCreate.d.ts +2 -0
  76. package/operations/entry/filtering/plugins/refFilterCreate.js +89 -0
  77. package/operations/entry/filtering/plugins/refFilterCreate.js.map +1 -0
  78. package/operations/entry/filtering/sort.d.ts +12 -0
  79. package/operations/entry/filtering/sort.js +84 -0
  80. package/operations/entry/filtering/sort.js.map +1 -0
  81. package/operations/entry/filtering/systemFields.d.ts +4 -0
  82. package/operations/entry/filtering/systemFields.js +72 -0
  83. package/operations/entry/filtering/systemFields.js.map +1 -0
  84. package/operations/entry/filtering/transform.d.ts +6 -0
  85. package/operations/entry/filtering/transform.js +19 -0
  86. package/operations/entry/filtering/transform.js.map +1 -0
  87. package/operations/entry/filtering/types.d.ts +40 -0
  88. package/operations/entry/filtering/types.js +5 -0
  89. package/operations/entry/filtering/types.js.map +1 -0
  90. package/operations/entry/filtering/values.d.ts +2 -0
  91. package/operations/entry/filtering/values.js +28 -0
  92. package/operations/entry/filtering/values.js.map +1 -0
  93. package/operations/entry/filtering/where.d.ts +5 -0
  94. package/operations/entry/filtering/where.js +38 -0
  95. package/operations/entry/filtering/where.js.map +1 -0
  96. package/operations/entry/index.d.ts +2 -2
  97. package/operations/entry/index.js +278 -227
  98. package/operations/entry/index.js.map +1 -0
  99. package/operations/entry/keys.js +11 -0
  100. package/operations/entry/keys.js.map +1 -0
  101. package/operations/entry/systemFields.js +24 -0
  102. package/operations/entry/systemFields.js.map +1 -0
  103. package/operations/group/index.d.ts +3 -2
  104. package/operations/group/index.js +7 -13
  105. package/operations/group/index.js.map +1 -0
  106. package/operations/model/index.d.ts +3 -2
  107. package/operations/model/index.js +15 -14
  108. package/operations/model/index.js.map +1 -0
  109. package/operations/settings/index.d.ts +3 -2
  110. package/operations/settings/index.js +7 -13
  111. package/operations/settings/index.js.map +1 -0
  112. package/operations/system/index.d.ts +3 -2
  113. package/operations/system/index.js +5 -11
  114. package/operations/system/index.js.map +1 -0
  115. package/package.json +22 -23
  116. package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +22 -0
  117. package/plugins/CmsEntryFieldFilterPathPlugin.js +55 -0
  118. package/plugins/CmsEntryFieldFilterPathPlugin.js.map +1 -0
  119. package/plugins/CmsEntryFieldFilterPlugin.d.ts +43 -0
  120. package/plugins/CmsEntryFieldFilterPlugin.js +31 -0
  121. package/plugins/CmsEntryFieldFilterPlugin.js.map +1 -0
  122. package/plugins/CmsEntryFieldSortingPlugin.d.ts +42 -0
  123. package/plugins/CmsEntryFieldSortingPlugin.js +38 -0
  124. package/plugins/CmsEntryFieldSortingPlugin.js.map +1 -0
  125. package/plugins/index.d.ts +3 -0
  126. package/plugins/index.js +44 -0
  127. package/plugins/index.js.map +1 -0
  128. package/types.d.ts +2 -33
  129. package/types.js.map +1 -0
  130. package/dynamoDb/path/ref.d.ts +0 -3
  131. package/dynamoDb/path/ref.js +0 -27
  132. package/operations/entry/utils.d.ts +0 -31
  133. package/operations/entry/utils.js +0 -406
@@ -0,0 +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":"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"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,11 +9,20 @@ exports.createRevisionSortKey = exports.createPublishedSortKey = exports.createP
7
9
 
8
10
  var _utils = require("@webiny/utils");
9
11
 
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
10
14
  const createBasePartitionKey = params => {
11
15
  const {
12
16
  tenant,
13
17
  locale
14
18
  } = params;
19
+
20
+ if (!tenant) {
21
+ throw new _error.default(`Missing tenant variable when creating entry basePartitionKey`);
22
+ } else if (!locale) {
23
+ throw new _error.default(`Missing tenant variable when creating entry basePartitionKey`);
24
+ }
25
+
15
26
  return `T#${tenant}#L#${locale}#CMS#CME`;
16
27
  };
17
28
 
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createBasePartitionKey","params","tenant","locale","WebinyError","createPartitionKey","id","initialId","parseIdentifier","createRevisionSortKey","zeroPad","version","createLatestSortKey","createPublishedSortKey","createGSIPartitionKey","type","modelId","partitionKey","createGSISortKey"],"sources":["keys.ts"],"sourcesContent":["import { parseIdentifier, zeroPad } from \"@webiny/utils\";\nimport WebinyError from \"@webiny/error\";\n\ninterface BasePartitionKeyParams {\n tenant: string;\n locale: string;\n}\nconst createBasePartitionKey = (params: BasePartitionKeyParams): string => {\n const { tenant, locale } = params;\n if (!tenant) {\n throw new WebinyError(`Missing tenant variable when creating entry basePartitionKey`);\n } else if (!locale) {\n throw new WebinyError(`Missing tenant variable when creating entry basePartitionKey`);\n }\n return `T#${tenant}#L#${locale}#CMS#CME`;\n};\n\nexport interface PartitionKeyParams extends BasePartitionKeyParams {\n id: string;\n}\nexport const createPartitionKey = (params: PartitionKeyParams): string => {\n const { id: initialId } = params;\n const { id } = parseIdentifier(initialId);\n return `${createBasePartitionKey(params)}#CME#${id}`;\n};\n\nexport interface SortKeyParams {\n version: number;\n}\nexport const createRevisionSortKey = (params: SortKeyParams): string => {\n return `REV#${zeroPad(params.version)}`;\n};\n\nexport const createLatestSortKey = (): string => {\n return \"L\";\n};\n\nexport const createPublishedSortKey = (): string => {\n return \"P\";\n};\n\nexport interface GSIPartitionKeyParams {\n tenant: string;\n locale: string;\n modelId: string;\n}\nexport const createGSIPartitionKey = (params: GSIPartitionKeyParams, type: \"A\" | \"L\" | \"P\") => {\n const { modelId } = params;\n const partitionKey = createBasePartitionKey(params);\n return `${partitionKey}#M#${modelId}#${type}`;\n};\n\nexport interface GSISortKeyParams {\n id: string;\n}\nexport const createGSISortKey = (params: GSISortKeyParams): string => {\n return params.id;\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAMA,MAAMA,sBAAsB,GAAIC,MAAD,IAA4C;EACvE,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAqBF,MAA3B;;EACA,IAAI,CAACC,MAAL,EAAa;IACT,MAAM,IAAIE,cAAJ,CAAiB,8DAAjB,CAAN;EACH,CAFD,MAEO,IAAI,CAACD,MAAL,EAAa;IAChB,MAAM,IAAIC,cAAJ,CAAiB,8DAAjB,CAAN;EACH;;EACD,OAAQ,KAAIF,MAAO,MAAKC,MAAO,UAA/B;AACH,CARD;;AAaO,MAAME,kBAAkB,GAAIJ,MAAD,IAAwC;EACtE,MAAM;IAAEK,EAAE,EAAEC;EAAN,IAAoBN,MAA1B;EACA,MAAM;IAAEK;EAAF,IAAS,IAAAE,sBAAA,EAAgBD,SAAhB,CAAf;EACA,OAAQ,GAAEP,sBAAsB,CAACC,MAAD,CAAS,QAAOK,EAAG,EAAnD;AACH,CAJM;;;;AASA,MAAMG,qBAAqB,GAAIR,MAAD,IAAmC;EACpE,OAAQ,OAAM,IAAAS,cAAA,EAAQT,MAAM,CAACU,OAAf,CAAwB,EAAtC;AACH,CAFM;;;;AAIA,MAAMC,mBAAmB,GAAG,MAAc;EAC7C,OAAO,GAAP;AACH,CAFM;;;;AAIA,MAAMC,sBAAsB,GAAG,MAAc;EAChD,OAAO,GAAP;AACH,CAFM;;;;AASA,MAAMC,qBAAqB,GAAG,CAACb,MAAD,EAAgCc,IAAhC,KAA0D;EAC3F,MAAM;IAAEC;EAAF,IAAcf,MAApB;EACA,MAAMgB,YAAY,GAAGjB,sBAAsB,CAACC,MAAD,CAA3C;EACA,OAAQ,GAAEgB,YAAa,MAAKD,OAAQ,IAAGD,IAAK,EAA5C;AACH,CAJM;;;;AASA,MAAMG,gBAAgB,GAAIjB,MAAD,IAAsC;EAClE,OAAOA,MAAM,CAACK,EAAd;AACH,CAFM"}
@@ -13,38 +13,62 @@ const systemFields = {
13
13
  id: createSystemField({
14
14
  id: "id",
15
15
  type: "text",
16
+ storageId: "id",
16
17
  fieldId: "id"
17
18
  }),
18
19
  entryId: createSystemField({
19
20
  id: "entryId",
20
21
  type: "text",
22
+ storageId: "entryId",
21
23
  fieldId: "entryId"
22
24
  }),
23
25
  createdOn: createSystemField({
24
26
  id: "createdOn",
25
27
  type: "datetime",
28
+ storageId: "createdOn",
26
29
  fieldId: "createdOn"
27
30
  }),
28
31
  savedOn: createSystemField({
29
32
  id: "savedOn",
30
33
  type: "datetime",
34
+ storageId: "savedOn",
31
35
  fieldId: "savedOn"
32
36
  }),
33
37
  createdBy: createSystemField({
34
38
  id: "createdBy",
35
39
  type: "plainObject",
40
+ storageId: "createdBy",
36
41
  fieldId: "createdBy",
37
42
  settings: {
38
43
  path: "createdBy.id"
39
44
  }
40
45
  }),
46
+ meta: createSystemField({
47
+ id: "meta",
48
+ type: "plainObject",
49
+ storageId: "meta",
50
+ fieldId: "meta"
51
+ }),
41
52
  ownedBy: createSystemField({
42
53
  id: "ownedBy",
43
54
  type: "plainObject",
55
+ storageId: "ownedBy",
44
56
  fieldId: "ownedBy",
45
57
  settings: {
46
58
  path: "ownedBy.id"
47
59
  }
60
+ }),
61
+ version: createSystemField({
62
+ id: "version",
63
+ type: "number",
64
+ storageId: "version",
65
+ fieldId: "version"
66
+ }),
67
+ status: createSystemField({
68
+ id: "status",
69
+ type: "string",
70
+ storageId: "status",
71
+ fieldId: "status"
48
72
  })
49
73
  };
50
74
  exports.systemFields = systemFields;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSystemField","field","systemFields","id","type","storageId","fieldId","entryId","createdOn","savedOn","createdBy","settings","path","meta","ownedBy","version","status"],"sources":["systemFields.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\n\ntype CmsModelFieldInput = Partial<CmsModelField> &\n Pick<CmsModelField, \"id\" | \"type\" | \"storageId\" | \"fieldId\">;\nconst createSystemField = (field: CmsModelFieldInput): CmsModelField => {\n return field as CmsModelField;\n};\n\nexport const systemFields: Record<string, CmsModelField> = {\n id: createSystemField({\n id: \"id\",\n type: \"text\",\n storageId: \"id\",\n fieldId: \"id\"\n }),\n entryId: createSystemField({\n id: \"entryId\",\n type: \"text\",\n storageId: \"entryId\",\n fieldId: \"entryId\"\n }),\n createdOn: createSystemField({\n id: \"createdOn\",\n type: \"datetime\",\n storageId: \"createdOn\",\n fieldId: \"createdOn\"\n }),\n savedOn: createSystemField({\n id: \"savedOn\",\n type: \"datetime\",\n storageId: \"savedOn\",\n fieldId: \"savedOn\"\n }),\n createdBy: createSystemField({\n id: \"createdBy\",\n type: \"plainObject\",\n storageId: \"createdBy\",\n fieldId: \"createdBy\",\n settings: {\n path: \"createdBy.id\"\n }\n }),\n meta: createSystemField({\n id: \"meta\",\n type: \"plainObject\",\n storageId: \"meta\",\n fieldId: \"meta\"\n }),\n ownedBy: createSystemField({\n id: \"ownedBy\",\n type: \"plainObject\",\n storageId: \"ownedBy\",\n fieldId: \"ownedBy\",\n settings: {\n path: \"ownedBy.id\"\n }\n }),\n version: createSystemField({\n id: \"version\",\n type: \"number\",\n storageId: \"version\",\n fieldId: \"version\"\n }),\n status: createSystemField({\n id: \"status\",\n type: \"string\",\n storageId: \"status\",\n fieldId: \"status\"\n })\n};\n"],"mappings":";;;;;;;AAIA,MAAMA,iBAAiB,GAAIC,KAAD,IAA8C;EACpE,OAAOA,KAAP;AACH,CAFD;;AAIO,MAAMC,YAA2C,GAAG;EACvDC,EAAE,EAAEH,iBAAiB,CAAC;IAClBG,EAAE,EAAE,IADc;IAElBC,IAAI,EAAE,MAFY;IAGlBC,SAAS,EAAE,IAHO;IAIlBC,OAAO,EAAE;EAJS,CAAD,CADkC;EAOvDC,OAAO,EAAEP,iBAAiB,CAAC;IACvBG,EAAE,EAAE,SADmB;IAEvBC,IAAI,EAAE,MAFiB;IAGvBC,SAAS,EAAE,SAHY;IAIvBC,OAAO,EAAE;EAJc,CAAD,CAP6B;EAavDE,SAAS,EAAER,iBAAiB,CAAC;IACzBG,EAAE,EAAE,WADqB;IAEzBC,IAAI,EAAE,UAFmB;IAGzBC,SAAS,EAAE,WAHc;IAIzBC,OAAO,EAAE;EAJgB,CAAD,CAb2B;EAmBvDG,OAAO,EAAET,iBAAiB,CAAC;IACvBG,EAAE,EAAE,SADmB;IAEvBC,IAAI,EAAE,UAFiB;IAGvBC,SAAS,EAAE,SAHY;IAIvBC,OAAO,EAAE;EAJc,CAAD,CAnB6B;EAyBvDI,SAAS,EAAEV,iBAAiB,CAAC;IACzBG,EAAE,EAAE,WADqB;IAEzBC,IAAI,EAAE,aAFmB;IAGzBC,SAAS,EAAE,WAHc;IAIzBC,OAAO,EAAE,WAJgB;IAKzBK,QAAQ,EAAE;MACNC,IAAI,EAAE;IADA;EALe,CAAD,CAzB2B;EAkCvDC,IAAI,EAAEb,iBAAiB,CAAC;IACpBG,EAAE,EAAE,MADgB;IAEpBC,IAAI,EAAE,aAFc;IAGpBC,SAAS,EAAE,MAHS;IAIpBC,OAAO,EAAE;EAJW,CAAD,CAlCgC;EAwCvDQ,OAAO,EAAEd,iBAAiB,CAAC;IACvBG,EAAE,EAAE,SADmB;IAEvBC,IAAI,EAAE,aAFiB;IAGvBC,SAAS,EAAE,SAHY;IAIvBC,OAAO,EAAE,SAJc;IAKvBK,QAAQ,EAAE;MACNC,IAAI,EAAE;IADA;EALa,CAAD,CAxC6B;EAiDvDG,OAAO,EAAEf,iBAAiB,CAAC;IACvBG,EAAE,EAAE,SADmB;IAEvBC,IAAI,EAAE,QAFiB;IAGvBC,SAAS,EAAE,SAHY;IAIvBC,OAAO,EAAE;EAJc,CAAD,CAjD6B;EAuDvDU,MAAM,EAAEhB,iBAAiB,CAAC;IACtBG,EAAE,EAAE,QADkB;IAEtBC,IAAI,EAAE,QAFgB;IAGtBC,SAAS,EAAE,QAHW;IAItBC,OAAO,EAAE;EAJa,CAAD;AAvD8B,CAApD"}
@@ -1,8 +1,9 @@
1
1
  import { CmsGroupStorageOperations } from "@webiny/api-headless-cms/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
3
  import { PluginsContainer } from "@webiny/plugins";
4
- export interface Params {
4
+ interface CreateGroupsStorageOperationsParams {
5
5
  entity: Entity<any>;
6
6
  plugins: PluginsContainer;
7
7
  }
8
- export declare const createGroupsStorageOperations: (params: Params) => CmsGroupStorageOperations;
8
+ export declare const createGroupsStorageOperations: (params: CreateGroupsStorageOperationsParams) => CmsGroupStorageOperations;
9
+ export {};
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createGroupsStorageOperations = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
13
 
@@ -23,10 +23,6 @@ var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueF
23
23
 
24
24
  var _sort = require("@webiny/db-dynamodb/utils/sort");
25
25
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
-
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
29
-
30
26
  const createPartitionKey = params => {
31
27
  const {
32
28
  tenant,
@@ -71,7 +67,7 @@ const createGroupsStorageOperations = params => {
71
67
  const keys = createKeys(group);
72
68
 
73
69
  try {
74
- await entity.put(_objectSpread(_objectSpread({}, group), {}, {
70
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
75
71
  TYPE: createType()
76
72
  }, keys));
77
73
  return group;
@@ -86,13 +82,12 @@ const createGroupsStorageOperations = params => {
86
82
 
87
83
  const update = async params => {
88
84
  const {
89
- group,
90
- original
85
+ group
91
86
  } = params;
92
87
  const keys = createKeys(group);
93
88
 
94
89
  try {
95
- await entity.put(_objectSpread(_objectSpread({}, group), {}, {
90
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
96
91
  TYPE: createType()
97
92
  }, keys));
98
93
  return group;
@@ -100,7 +95,6 @@ const createGroupsStorageOperations = params => {
100
95
  throw new _error.default(ex.message || "Could not update group.", ex.code || "UPDATE_GROUP_ERROR", {
101
96
  error: ex,
102
97
  group,
103
- original,
104
98
  keys
105
99
  });
106
100
  }
@@ -135,7 +129,7 @@ const createGroupsStorageOperations = params => {
135
129
  });
136
130
  return (0, _cleanup.cleanupItem)(entity, group);
137
131
  } catch (ex) {
138
- throw new _error.default(ex.message || "Could not get group.", ex.code || "GET_GROUP_ERROR", _objectSpread(_objectSpread({
132
+ throw new _error.default(ex.message || "Could not get group.", ex.code || "GET_GROUP_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({
139
133
  error: ex
140
134
  }, params), {}, {
141
135
  keys
@@ -160,7 +154,7 @@ const createGroupsStorageOperations = params => {
160
154
  try {
161
155
  records = await (0, _query.queryAll)(queryAllParams);
162
156
  } catch (ex) {
163
- throw new _error.default(ex.message || "Could not list groups.", ex.code || "LIST_GROUP_ERROR", _objectSpread(_objectSpread({
157
+ throw new _error.default(ex.message || "Could not list groups.", ex.code || "LIST_GROUP_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({
164
158
  error: ex
165
159
  }, params), {}, {
166
160
  sort,
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPartitionKey","params","tenant","locale","createSortKeys","id","createKeys","PK","SK","createType","createGroupsStorageOperations","entity","plugins","filteringPlugins","byType","ValueFilterPlugin","type","length","WebinyError","create","group","keys","put","TYPE","ex","message","code","error","update","deleteGroup","delete","get","getRecord","cleanupItem","list","sort","where","queryAllParams","partitionKey","options","gte","records","queryAll","filteredItems","filterItems","items","fields","sortItems"],"sources":["index.ts"],"sourcesContent":["import {\n CmsGroup,\n CmsGroupStorageOperations,\n CmsGroupStorageOperationsCreateParams,\n CmsGroupStorageOperationsDeleteParams,\n CmsGroupStorageOperationsGetParams,\n CmsGroupStorageOperationsListParams,\n CmsGroupStorageOperationsUpdateParams\n} from \"@webiny/api-headless-cms/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport WebinyError from \"@webiny/error\";\nimport { get as getRecord } from \"@webiny/db-dynamodb/utils/get\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\n\ninterface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#CMS#CMG`;\n};\n\ninterface SortKeyParams {\n id: string;\n}\nconst createSortKeys = (params: SortKeyParams): string => {\n const { id } = params;\n return id;\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\nconst createKeys = (params: PartitionKeyParams & SortKeyParams): Keys => {\n return {\n PK: createPartitionKey(params),\n SK: createSortKeys(params)\n };\n};\n\nconst createType = (): string => {\n return \"cms.group\";\n};\n\ninterface CreateGroupsStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createGroupsStorageOperations = (\n params: CreateGroupsStorageOperationsParams\n): CmsGroupStorageOperations => {\n const { entity, plugins } = params;\n\n const filteringPlugins = plugins.byType<ValueFilterPlugin>(ValueFilterPlugin.type);\n if (filteringPlugins.length === 0) {\n throw new WebinyError(\n \"DynamoDB filtering plugins not loaded.\",\n \"MISSING_DYNAMODB_FILTERING_PLUGINS\"\n );\n }\n\n const create = async (params: CmsGroupStorageOperationsCreateParams) => {\n const { group } = params;\n const keys = createKeys(group);\n try {\n await entity.put({\n ...group,\n TYPE: createType(),\n ...keys\n });\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create group.\",\n ex.code || \"CREATE_GROUP_ERROR\",\n {\n error: ex,\n group,\n keys\n }\n );\n }\n };\n const update = async (params: CmsGroupStorageOperationsUpdateParams) => {\n const { group } = params;\n const keys = createKeys(group);\n try {\n await entity.put({\n ...group,\n TYPE: createType(),\n ...keys\n });\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update group.\",\n ex.code || \"UPDATE_GROUP_ERROR\",\n {\n error: ex,\n group,\n keys\n }\n );\n }\n };\n const deleteGroup = async (params: CmsGroupStorageOperationsDeleteParams) => {\n const { group } = params;\n // TODO make sure that group has locale and tenant on it - add it in the crud just in case\n const keys = createKeys(group);\n\n try {\n await entity.delete(keys);\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete group.\",\n ex.code || \"DELETE_GROUP_ERROR\",\n {\n error: ex,\n group,\n keys\n }\n );\n }\n };\n const get = async (params: CmsGroupStorageOperationsGetParams) => {\n const keys = createKeys(params);\n\n try {\n const group = await getRecord<CmsGroup>({\n entity,\n keys\n });\n\n return cleanupItem(entity, group);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get group.\",\n ex.code || \"GET_GROUP_ERROR\",\n {\n error: ex,\n ...params,\n keys\n }\n );\n }\n };\n const list = async (params: CmsGroupStorageOperationsListParams) => {\n const { sort, where } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey(where),\n options: {\n gte: \" \"\n }\n };\n\n let records: CmsGroup[] = [];\n try {\n records = await queryAll(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list groups.\",\n ex.code || \"LIST_GROUP_ERROR\",\n {\n error: ex,\n ...params,\n sort,\n where\n }\n );\n }\n\n const filteredItems = filterItems({\n items: records,\n where,\n fields: [],\n plugins\n });\n if (!sort || sort.length === 0) {\n return filteredItems;\n }\n return sortItems({\n items: filteredItems,\n sort,\n fields: []\n });\n };\n\n return {\n create,\n update,\n delete: deleteGroup,\n get,\n list\n };\n};\n"],"mappings":";;;;;;;;;;;AAUA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAMA,MAAMA,kBAAkB,GAAIC,MAAD,IAAwC;EAC/D,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAqBF,MAA3B;EACA,OAAQ,KAAIC,MAAO,MAAKC,MAAO,UAA/B;AACH,CAHD;;AAQA,MAAMC,cAAc,GAAIH,MAAD,IAAmC;EACtD,MAAM;IAAEI;EAAF,IAASJ,MAAf;EACA,OAAOI,EAAP;AACH,CAHD;;AASA,MAAMC,UAAU,GAAIL,MAAD,IAAsD;EACrE,OAAO;IACHM,EAAE,EAAEP,kBAAkB,CAACC,MAAD,CADnB;IAEHO,EAAE,EAAEJ,cAAc,CAACH,MAAD;EAFf,CAAP;AAIH,CALD;;AAOA,MAAMQ,UAAU,GAAG,MAAc;EAC7B,OAAO,WAAP;AACH,CAFD;;AAQO,MAAMC,6BAA6B,GACtCT,MADyC,IAEb;EAC5B,MAAM;IAAEU,MAAF;IAAUC;EAAV,IAAsBX,MAA5B;EAEA,MAAMY,gBAAgB,GAAGD,OAAO,CAACE,MAAR,CAAkCC,oCAAA,CAAkBC,IAApD,CAAzB;;EACA,IAAIH,gBAAgB,CAACI,MAAjB,KAA4B,CAAhC,EAAmC;IAC/B,MAAM,IAAIC,cAAJ,CACF,wCADE,EAEF,oCAFE,CAAN;EAIH;;EAED,MAAMC,MAAM,GAAG,MAAOlB,MAAP,IAAyD;IACpE,MAAM;MAAEmB;IAAF,IAAYnB,MAAlB;IACA,MAAMoB,IAAI,GAAGf,UAAU,CAACc,KAAD,CAAvB;;IACA,IAAI;MACA,MAAMT,MAAM,CAACW,GAAP,6DACCF,KADD;QAEFG,IAAI,EAAEd,UAAU;MAFd,GAGCY,IAHD,EAAN;MAKA,OAAOD,KAAP;IACH,CAPD,CAOE,OAAOI,EAAP,EAAW;MACT,MAAM,IAAIN,cAAJ,CACFM,EAAE,CAACC,OAAH,IAAc,yBADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,oBAFT,EAGF;QACIC,KAAK,EAAEH,EADX;QAEIJ,KAFJ;QAGIC;MAHJ,CAHE,CAAN;IASH;EACJ,CArBD;;EAsBA,MAAMO,MAAM,GAAG,MAAO3B,MAAP,IAAyD;IACpE,MAAM;MAAEmB;IAAF,IAAYnB,MAAlB;IACA,MAAMoB,IAAI,GAAGf,UAAU,CAACc,KAAD,CAAvB;;IACA,IAAI;MACA,MAAMT,MAAM,CAACW,GAAP,6DACCF,KADD;QAEFG,IAAI,EAAEd,UAAU;MAFd,GAGCY,IAHD,EAAN;MAKA,OAAOD,KAAP;IACH,CAPD,CAOE,OAAOI,EAAP,EAAW;MACT,MAAM,IAAIN,cAAJ,CACFM,EAAE,CAACC,OAAH,IAAc,yBADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,oBAFT,EAGF;QACIC,KAAK,EAAEH,EADX;QAEIJ,KAFJ;QAGIC;MAHJ,CAHE,CAAN;IASH;EACJ,CArBD;;EAsBA,MAAMQ,WAAW,GAAG,MAAO5B,MAAP,IAAyD;IACzE,MAAM;MAAEmB;IAAF,IAAYnB,MAAlB,CADyE,CAEzE;;IACA,MAAMoB,IAAI,GAAGf,UAAU,CAACc,KAAD,CAAvB;;IAEA,IAAI;MACA,MAAMT,MAAM,CAACmB,MAAP,CAAcT,IAAd,CAAN;MACA,OAAOD,KAAP;IACH,CAHD,CAGE,OAAOI,EAAP,EAAW;MACT,MAAM,IAAIN,cAAJ,CACFM,EAAE,CAACC,OAAH,IAAc,yBADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,oBAFT,EAGF;QACIC,KAAK,EAAEH,EADX;QAEIJ,KAFJ;QAGIC;MAHJ,CAHE,CAAN;IASH;EACJ,CAnBD;;EAoBA,MAAMU,GAAG,GAAG,MAAO9B,MAAP,IAAsD;IAC9D,MAAMoB,IAAI,GAAGf,UAAU,CAACL,MAAD,CAAvB;;IAEA,IAAI;MACA,MAAMmB,KAAK,GAAG,MAAM,IAAAY,QAAA,EAAoB;QACpCrB,MADoC;QAEpCU;MAFoC,CAApB,CAApB;MAKA,OAAO,IAAAY,oBAAA,EAAYtB,MAAZ,EAAoBS,KAApB,CAAP;IACH,CAPD,CAOE,OAAOI,EAAP,EAAW;MACT,MAAM,IAAIN,cAAJ,CACFM,EAAE,CAACC,OAAH,IAAc,sBADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,iBAFT;QAIEC,KAAK,EAAEH;MAJT,GAKKvB,MALL;QAMEoB;MANF,GAAN;IASH;EACJ,CArBD;;EAsBA,MAAMa,IAAI,GAAG,MAAOjC,MAAP,IAAuD;IAChE,MAAM;MAAEkC,IAAF;MAAQC;IAAR,IAAkBnC,MAAxB;IAEA,MAAMoC,cAA8B,GAAG;MACnC1B,MADmC;MAEnC2B,YAAY,EAAEtC,kBAAkB,CAACoC,KAAD,CAFG;MAGnCG,OAAO,EAAE;QACLC,GAAG,EAAE;MADA;IAH0B,CAAvC;IAQA,IAAIC,OAAmB,GAAG,EAA1B;;IACA,IAAI;MACAA,OAAO,GAAG,MAAM,IAAAC,eAAA,EAASL,cAAT,CAAhB;IACH,CAFD,CAEE,OAAOb,EAAP,EAAW;MACT,MAAM,IAAIN,cAAJ,CACFM,EAAE,CAACC,OAAH,IAAc,wBADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,kBAFT;QAIEC,KAAK,EAAEH;MAJT,GAKKvB,MALL;QAMEkC,IANF;QAOEC;MAPF,GAAN;IAUH;;IAED,MAAMO,aAAa,GAAG,IAAAC,mBAAA,EAAY;MAC9BC,KAAK,EAAEJ,OADuB;MAE9BL,KAF8B;MAG9BU,MAAM,EAAE,EAHsB;MAI9BlC;IAJ8B,CAAZ,CAAtB;;IAMA,IAAI,CAACuB,IAAD,IAASA,IAAI,CAAClB,MAAL,KAAgB,CAA7B,EAAgC;MAC5B,OAAO0B,aAAP;IACH;;IACD,OAAO,IAAAI,eAAA,EAAU;MACbF,KAAK,EAAEF,aADM;MAEbR,IAFa;MAGbW,MAAM,EAAE;IAHK,CAAV,CAAP;EAKH,CAzCD;;EA2CA,OAAO;IACH3B,MADG;IAEHS,MAFG;IAGHE,MAAM,EAAED,WAHL;IAIHE,GAJG;IAKHG;EALG,CAAP;AAOH,CArJM"}
@@ -1,6 +1,7 @@
1
1
  import { CmsModelStorageOperations } from "@webiny/api-headless-cms/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
- export interface Params {
3
+ interface CreateModelsStorageOperationsParams {
4
4
  entity: Entity<any>;
5
5
  }
6
- export declare const createModelsStorageOperations: (params: Params) => CmsModelStorageOperations;
6
+ export declare const createModelsStorageOperations: (params: CreateModelsStorageOperationsParams) => CmsModelStorageOperations;
7
+ export {};
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createModelsStorageOperations = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
13
 
@@ -17,15 +17,18 @@ var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
17
17
 
18
18
  var _query = require("@webiny/db-dynamodb/utils/query");
19
19
 
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
-
24
20
  const createPartitionKey = params => {
25
21
  const {
26
22
  tenant,
27
23
  locale
28
24
  } = params;
25
+
26
+ if (!tenant) {
27
+ throw new _error.default(`Missing tenant variable when creating model partitionKey.`);
28
+ } else if (!locale) {
29
+ throw new _error.default(`Missing locale variable when creating model partitionKey.`);
30
+ }
31
+
29
32
  return `T#${tenant}#L#${locale}#CMS#CM`;
30
33
  };
31
34
 
@@ -56,7 +59,7 @@ const createModelsStorageOperations = params => {
56
59
  const keys = createKeys(model);
57
60
 
58
61
  try {
59
- await entity.put(_objectSpread(_objectSpread(_objectSpread({}, model), keys), {}, {
62
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _cleanup.cleanupItem)(entity, model)), keys), {}, {
60
63
  TYPE: createType()
61
64
  }));
62
65
  return model;
@@ -71,21 +74,19 @@ const createModelsStorageOperations = params => {
71
74
 
72
75
  const update = async params => {
73
76
  const {
74
- original,
75
77
  model
76
78
  } = params;
77
79
  const keys = createKeys(model);
78
80
 
79
81
  try {
80
- await entity.put(_objectSpread(_objectSpread(_objectSpread({}, model), keys), {}, {
82
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _cleanup.cleanupItem)(entity, model)), keys), {}, {
81
83
  TYPE: createType()
82
84
  }));
83
85
  return model;
84
86
  } catch (ex) {
85
- throw new _error.default(ex.messatge || "Could not update model.", ex.code || "MODEL_UPDATE_ERROR", {
87
+ throw new _error.default(ex.message || "Could not update model.", ex.code || "MODEL_UPDATE_ERROR", {
86
88
  error: ex,
87
89
  model,
88
- original,
89
90
  keys
90
91
  });
91
92
  }
@@ -101,7 +102,7 @@ const createModelsStorageOperations = params => {
101
102
  await entity.delete(keys);
102
103
  return model;
103
104
  } catch (ex) {
104
- throw new _error.default(ex.messatge || "Could not delete model.", ex.code || "MODEL_DELETE_ERROR", {
105
+ throw new _error.default(ex.message || "Could not delete model.", ex.code || "MODEL_DELETE_ERROR", {
105
106
  error: ex,
106
107
  model,
107
108
  keys
@@ -119,7 +120,7 @@ const createModelsStorageOperations = params => {
119
120
  });
120
121
  return (0, _cleanup.cleanupItem)(entity, item);
121
122
  } catch (ex) {
122
- throw new _error.default(ex.messatge || "Could not get model.", ex.code || "MODEL_GET_ERROR", {
123
+ throw new _error.default(ex.message || "Could not get model.", ex.code || "MODEL_GET_ERROR", {
123
124
  error: ex,
124
125
  keys
125
126
  });
@@ -142,7 +143,7 @@ const createModelsStorageOperations = params => {
142
143
  const items = await (0, _query.queryAll)(queryAllParams);
143
144
  return (0, _cleanup.cleanupItems)(entity, items);
144
145
  } catch (ex) {
145
- throw new _error.default(ex.messatge || "Could not list models.", ex.code || "MODEL_LIST_ERROR", {
146
+ throw new _error.default(ex.message || "Could not list models.", ex.code || "MODEL_LIST_ERROR", {
146
147
  error: ex,
147
148
  partitionKey: queryAllParams.partitionKey
148
149
  });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPartitionKey","params","tenant","locale","WebinyError","createSortKey","modelId","createKeys","PK","SK","createType","createModelsStorageOperations","entity","create","model","keys","put","cleanupItem","TYPE","ex","error","update","message","code","deleteModel","delete","get","item","getRecord","list","where","queryAllParams","partitionKey","options","gte","items","queryAll","cleanupItems"],"sources":["index.ts"],"sourcesContent":["import {\n CmsModel,\n CmsModelStorageOperations,\n CmsModelStorageOperationsCreateParams,\n CmsModelStorageOperationsDeleteParams,\n CmsModelStorageOperationsGetParams,\n CmsModelStorageOperationsListParams,\n CmsModelStorageOperationsUpdateParams\n} from \"@webiny/api-headless-cms/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport WebinyError from \"@webiny/error\";\nimport { get as getRecord } from \"@webiny/db-dynamodb/utils/get\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\n\ninterface PartitionKeysParams {\n tenant: string;\n locale: string;\n}\nconst createPartitionKey = (params: PartitionKeysParams): string => {\n const { tenant, locale } = params;\n if (!tenant) {\n throw new WebinyError(`Missing tenant variable when creating model partitionKey.`);\n } else if (!locale) {\n throw new WebinyError(`Missing locale variable when creating model partitionKey.`);\n }\n return `T#${tenant}#L#${locale}#CMS#CM`;\n};\n\ninterface SortKeyParams {\n modelId: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n return params.modelId;\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\nconst createKeys = (params: PartitionKeysParams & SortKeyParams): Keys => {\n return {\n PK: createPartitionKey(params),\n SK: createSortKey(params)\n };\n};\n\nconst createType = (): string => {\n return \"cms.model\";\n};\n\ninterface CreateModelsStorageOperationsParams {\n entity: Entity<any>;\n}\nexport const createModelsStorageOperations = (\n params: CreateModelsStorageOperationsParams\n): CmsModelStorageOperations => {\n const { entity } = params;\n\n const create = async (params: CmsModelStorageOperationsCreateParams) => {\n const { model } = params;\n\n const keys = createKeys(model);\n\n try {\n await entity.put({\n ...cleanupItem(entity, model),\n ...keys,\n TYPE: createType()\n });\n return model;\n } catch (ex) {\n throw new WebinyError(`Could not create CMS Content Model.`, \"CREATE_MODEL_ERROR\", {\n error: ex,\n model,\n keys\n });\n }\n };\n\n const update = async (params: CmsModelStorageOperationsUpdateParams) => {\n const { model } = params;\n\n const keys = createKeys(model);\n\n try {\n await entity.put({\n ...cleanupItem(entity, model),\n ...keys,\n TYPE: createType()\n });\n return model;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update model.\",\n ex.code || \"MODEL_UPDATE_ERROR\",\n {\n error: ex,\n model,\n keys\n }\n );\n }\n };\n\n const deleteModel = async (params: CmsModelStorageOperationsDeleteParams) => {\n const { model } = params;\n const keys = createKeys(model);\n\n try {\n await entity.delete(keys);\n return model;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete model.\",\n ex.code || \"MODEL_DELETE_ERROR\",\n {\n error: ex,\n model,\n keys\n }\n );\n }\n };\n\n const get = async (params: CmsModelStorageOperationsGetParams) => {\n const keys = createKeys(params);\n\n try {\n const item = await getRecord<CmsModel>({\n entity,\n keys\n });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get model.\",\n ex.code || \"MODEL_GET_ERROR\",\n {\n error: ex,\n keys\n }\n );\n }\n };\n\n const list = async (params: CmsModelStorageOperationsListParams) => {\n const { where } = params;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey(where),\n options: {\n gte: \" \"\n }\n };\n try {\n const items = await queryAll<CmsModel>(queryAllParams);\n\n return cleanupItems(entity, items);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list models.\",\n ex.code || \"MODEL_LIST_ERROR\",\n {\n error: ex,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n };\n\n return {\n create,\n update,\n delete: deleteModel,\n get,\n list\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { CmsSettingsStorageOperations } from "@webiny/api-headless-cms/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
- export interface Params {
3
+ interface CreateSettingsStorageOperationsParams {
4
4
  entity: Entity<any>;
5
5
  }
6
- export declare const createSettingsStorageOperations: (params: Params) => CmsSettingsStorageOperations;
6
+ export declare const createSettingsStorageOperations: (params: CreateSettingsStorageOperationsParams) => CmsSettingsStorageOperations;
7
+ export {};
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createSettingsStorageOperations = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _get = require("@webiny/db-dynamodb/utils/get");
13
13
 
@@ -15,12 +15,8 @@ var _error = _interopRequireDefault(require("@webiny/error"));
15
15
 
16
16
  var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
17
17
 
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
18
  const convertToDbData = settings => {
23
- return _objectSpread(_objectSpread({}, settings), {}, {
19
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
24
20
  contentModelLastChange: settings.contentModelLastChange.toISOString()
25
21
  });
26
22
  };
@@ -38,7 +34,7 @@ const convertFromDbData = settings => {
38
34
  contentModelLastChange = new Date();
39
35
  }
40
36
 
41
- return _objectSpread(_objectSpread({}, settings), {}, {
37
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
42
38
  contentModelLastChange
43
39
  });
44
40
  };
@@ -74,7 +70,7 @@ const createSettingsStorageOperations = params => {
74
70
  const dbSettings = convertToDbData(settings);
75
71
 
76
72
  try {
77
- await entity.put(_objectSpread(_objectSpread({}, dbSettings), keys));
73
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, dbSettings), keys));
78
74
  return settings;
79
75
  } catch (ex) {
80
76
  throw new _error.default(ex.message || "Could not create settings.", ex.code || "CREATE_SETTINGS_ERROR", {
@@ -88,21 +84,19 @@ const createSettingsStorageOperations = params => {
88
84
 
89
85
  const update = async params => {
90
86
  const {
91
- settings,
92
- original
87
+ settings
93
88
  } = params;
94
89
  const keys = createKeys(settings);
95
90
  const dbSettings = convertToDbData(settings);
96
91
 
97
92
  try {
98
- await entity.put(_objectSpread(_objectSpread({}, dbSettings), keys));
93
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, dbSettings), keys));
99
94
  return settings;
100
95
  } catch (ex) {
101
96
  throw new _error.default(ex.message || "Could not update settings.", ex.code || "UPDATE_SETTINGS_ERROR", {
102
97
  error: ex,
103
98
  settings,
104
99
  dbSettings,
105
- original,
106
100
  keys
107
101
  });
108
102
  }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertToDbData","settings","contentModelLastChange","toISOString","convertFromDbData","Date","createPartitionKey","tenant","locale","createSortKey","createKeys","params","PK","SK","createSettingsStorageOperations","entity","create","keys","dbSettings","put","ex","WebinyError","message","code","error","update","get","record","getRecord","cleanupItem"],"sources":["index.ts"],"sourcesContent":["import {\n CmsSettings,\n CmsSettingsStorageOperations,\n CmsSettingsStorageOperationsCreateParams,\n CmsSettingsStorageOperationsGetParams,\n CmsSettingsStorageOperationsUpdateParams\n} from \"@webiny/api-headless-cms/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get as getRecord } from \"@webiny/db-dynamodb/utils/get\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\n\ninterface CmsSettingsDb extends Omit<CmsSettings, \"contentModelLastChange\"> {\n contentModelLastChange: string;\n}\n\nconst convertToDbData = (settings: CmsSettings): CmsSettingsDb => {\n return {\n ...settings,\n contentModelLastChange: settings.contentModelLastChange.toISOString()\n };\n};\n\nconst convertFromDbData = (settings?: CmsSettingsDb): CmsSettings | null => {\n if (!settings) {\n return null;\n }\n let contentModelLastChange;\n try {\n contentModelLastChange = new Date(settings.contentModelLastChange);\n } catch {\n contentModelLastChange = new Date();\n }\n return {\n ...settings,\n contentModelLastChange\n };\n};\n\ninterface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\n\nconst createPartitionKey = ({ tenant, locale }: PartitionKeyParams): string => {\n return `T#${tenant}#L#${locale}#CMS#SETTINGS`;\n};\n\nconst createSortKey = (): string => {\n return \"settings\";\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\nconst createKeys = (params: PartitionKeyParams): Keys => {\n return {\n PK: createPartitionKey(params),\n SK: createSortKey()\n };\n};\n\ninterface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createSettingsStorageOperations = (\n params: CreateSettingsStorageOperationsParams\n): CmsSettingsStorageOperations => {\n const { entity } = params;\n\n const create = async (params: CmsSettingsStorageOperationsCreateParams) => {\n const { settings } = params;\n const keys = createKeys(settings);\n\n const dbSettings: CmsSettingsDb = convertToDbData(settings);\n\n try {\n await entity.put({\n ...dbSettings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create settings.\",\n ex.code || \"CREATE_SETTINGS_ERROR\",\n {\n error: ex,\n settings,\n dbSettings,\n keys\n }\n );\n }\n };\n\n const update = async (params: CmsSettingsStorageOperationsUpdateParams) => {\n const { settings } = params;\n\n const keys = createKeys(settings);\n\n const dbSettings: CmsSettingsDb = convertToDbData(settings);\n\n try {\n await entity.put({\n ...dbSettings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update settings.\",\n ex.code || \"UPDATE_SETTINGS_ERROR\",\n {\n error: ex,\n settings,\n dbSettings,\n keys\n }\n );\n }\n };\n\n const get = async (params: CmsSettingsStorageOperationsGetParams) => {\n const keys = createKeys(params);\n try {\n const record = await getRecord<CmsSettingsDb>({\n entity,\n keys\n });\n if (!record) {\n return null;\n }\n const settings = cleanupItem(entity, record) as CmsSettingsDb;\n return convertFromDbData(settings);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get settings.\",\n ex.code || \"GET_SETTINGS_ERROR\",\n {\n error: ex,\n keys\n }\n );\n }\n };\n\n return {\n create,\n get,\n update\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { CmsSystemStorageOperations } from "@webiny/api-headless-cms/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
- export interface Params {
3
+ interface CreateSystemStorageOperationsParams {
4
4
  entity: Entity<any>;
5
5
  }
6
- export declare const createSystemStorageOperations: (params: Params) => CmsSystemStorageOperations;
6
+ export declare const createSystemStorageOperations: (params: CreateSystemStorageOperationsParams) => CmsSystemStorageOperations;
7
+ export {};