@webiny/api-headless-cms-ddb 0.0.0-mt-2 → 0.0.0-unstable.085ff6572f
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/definitions/entry.d.ts +2 -1
- package/definitions/entry.js +12 -12
- package/definitions/entry.js.map +1 -0
- package/definitions/group.d.ts +2 -1
- package/definitions/group.js +3 -12
- package/definitions/group.js.map +1 -0
- package/definitions/model.d.ts +2 -1
- package/definitions/model.js +25 -12
- package/definitions/model.js.map +1 -0
- package/definitions/settings.d.ts +2 -1
- package/definitions/settings.js +3 -12
- package/definitions/settings.js.map +1 -0
- package/definitions/system.d.ts +2 -1
- package/definitions/system.js +3 -12
- package/definitions/system.js.map +1 -0
- package/definitions/table.d.ts +2 -1
- package/definitions/table.js +0 -3
- package/definitions/table.js.map +1 -0
- package/dynamoDb/index.d.ts +1 -1
- package/dynamoDb/index.js +7 -17
- package/dynamoDb/index.js.map +1 -0
- package/dynamoDb/path/locationFolderId.d.ts +2 -0
- package/dynamoDb/path/locationFolderId.js +41 -0
- package/dynamoDb/path/locationFolderId.js.map +1 -0
- package/dynamoDb/path/plainObject.d.ts +2 -3
- package/dynamoDb/path/plainObject.js +25 -25
- package/dynamoDb/path/plainObject.js.map +1 -0
- package/dynamoDb/storage/date.d.ts +3 -3
- package/dynamoDb/storage/date.js +71 -54
- package/dynamoDb/storage/date.js.map +1 -0
- package/dynamoDb/storage/longText.d.ts +7 -4
- package/dynamoDb/storage/longText.js +72 -64
- package/dynamoDb/storage/longText.js.map +1 -0
- package/dynamoDb/storage/richText.d.ts +2 -8
- package/dynamoDb/storage/richText.js +62 -77
- package/dynamoDb/storage/richText.js.map +1 -0
- package/dynamoDb/transformValue/datetime.d.ts +4 -2
- package/dynamoDb/transformValue/datetime.js +28 -30
- package/dynamoDb/transformValue/datetime.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +54 -45
- package/index.js.map +1 -0
- package/operations/entry/dataLoader/DataLoaderCache.d.ts +17 -0
- package/operations/entry/dataLoader/DataLoaderCache.js +43 -0
- package/operations/entry/dataLoader/DataLoaderCache.js.map +1 -0
- package/operations/entry/dataLoader/constants.d.ts +1 -0
- package/operations/entry/dataLoader/constants.js +9 -0
- package/operations/entry/dataLoader/constants.js.map +1 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.d.ts +8 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.js +23 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.js.map +1 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.d.ts +4 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.js +43 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.js.map +1 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.d.ts +4 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js +57 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js.map +1 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.d.ts +4 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js +57 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js.map +1 -0
- package/operations/entry/dataLoader/getRevisionById.d.ts +4 -0
- package/operations/entry/dataLoader/getRevisionById.js +63 -0
- package/operations/entry/dataLoader/getRevisionById.js.map +1 -0
- package/operations/entry/dataLoader/index.d.ts +8 -0
- package/operations/entry/dataLoader/index.js +38 -0
- package/operations/entry/dataLoader/index.js.map +1 -0
- package/operations/entry/dataLoader/types.d.ts +6 -0
- package/operations/entry/dataLoader/types.js +5 -0
- package/operations/entry/dataLoader/types.js.map +1 -0
- package/operations/entry/dataLoaders.d.ts +17 -28
- package/operations/entry/dataLoaders.js +51 -239
- package/operations/entry/dataLoaders.js.map +1 -0
- package/operations/entry/filtering/createExpressions.d.ts +26 -0
- package/operations/entry/filtering/createExpressions.js +176 -0
- package/operations/entry/filtering/createExpressions.js.map +1 -0
- package/operations/entry/filtering/createFields.d.ts +16 -0
- package/operations/entry/filtering/createFields.js +105 -0
- package/operations/entry/filtering/createFields.js.map +1 -0
- package/operations/entry/filtering/extractSort.d.ts +17 -0
- package/operations/entry/filtering/extractSort.js +67 -0
- package/operations/entry/filtering/extractSort.js.map +1 -0
- package/operations/entry/filtering/filter.d.ts +15 -0
- package/operations/entry/filtering/filter.js +143 -0
- package/operations/entry/filtering/filter.js.map +1 -0
- package/operations/entry/filtering/fullTextSearch.d.ts +14 -0
- package/operations/entry/filtering/fullTextSearch.js +48 -0
- package/operations/entry/filtering/fullTextSearch.js.map +1 -0
- package/operations/entry/filtering/getValue.d.ts +5 -0
- package/operations/entry/filtering/getValue.js +63 -0
- package/operations/entry/filtering/getValue.js.map +1 -0
- package/operations/entry/filtering/index.d.ts +2 -0
- package/operations/entry/filtering/index.js +19 -0
- package/operations/entry/filtering/index.js.map +1 -0
- package/operations/entry/filtering/mapPlugins.d.ts +8 -0
- package/operations/entry/filtering/mapPlugins.js +31 -0
- package/operations/entry/filtering/mapPlugins.js.map +1 -0
- package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +2 -0
- package/operations/entry/filtering/plugins/defaultFilterCreate.js +43 -0
- package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +1 -0
- package/operations/entry/filtering/plugins/index.d.ts +1 -0
- package/operations/entry/filtering/plugins/index.js +13 -0
- package/operations/entry/filtering/plugins/index.js.map +1 -0
- package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +2 -0
- package/operations/entry/filtering/plugins/objectFilterCreate.js +88 -0
- package/operations/entry/filtering/plugins/objectFilterCreate.js.map +1 -0
- package/operations/entry/filtering/plugins/refFilterCreate.d.ts +2 -0
- package/operations/entry/filtering/plugins/refFilterCreate.js +73 -0
- package/operations/entry/filtering/plugins/refFilterCreate.js.map +1 -0
- package/operations/entry/filtering/sort.d.ts +12 -0
- package/operations/entry/filtering/sort.js +69 -0
- package/operations/entry/filtering/sort.js.map +1 -0
- package/operations/entry/filtering/systemFields.d.ts +4 -0
- package/operations/entry/filtering/systemFields.js +88 -0
- package/operations/entry/filtering/systemFields.js.map +1 -0
- package/operations/entry/filtering/transform.d.ts +6 -0
- package/operations/entry/filtering/transform.js +16 -0
- package/operations/entry/filtering/transform.js.map +1 -0
- package/operations/entry/filtering/types.d.ts +40 -0
- package/operations/entry/filtering/types.js +5 -0
- package/operations/entry/filtering/types.js.map +1 -0
- package/operations/entry/filtering/values.d.ts +2 -0
- package/operations/entry/filtering/values.js +22 -0
- package/operations/entry/filtering/values.js.map +1 -0
- package/operations/entry/filtering/where.d.ts +5 -0
- package/operations/entry/filtering/where.js +33 -0
- package/operations/entry/filtering/where.js.map +1 -0
- package/operations/entry/index.d.ts +3 -3
- package/operations/entry/index.js +425 -330
- package/operations/entry/index.js.map +1 -0
- package/operations/entry/keys.js +7 -14
- package/operations/entry/keys.js.map +1 -0
- package/operations/group/index.d.ts +3 -2
- package/operations/group/index.js +9 -45
- package/operations/group/index.js.map +1 -0
- package/operations/model/index.d.ts +3 -2
- package/operations/model/index.js +13 -37
- package/operations/model/index.js.map +1 -0
- package/operations/settings/index.d.ts +3 -2
- package/operations/settings/index.js +7 -37
- package/operations/settings/index.js.map +1 -0
- package/operations/system/index.d.ts +3 -2
- package/operations/system/index.js +5 -28
- package/operations/system/index.js.map +1 -0
- package/package.json +25 -26
- package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +23 -0
- package/plugins/CmsEntryFieldFilterPathPlugin.js +43 -0
- package/plugins/CmsEntryFieldFilterPathPlugin.js.map +1 -0
- package/plugins/CmsEntryFieldFilterPlugin.d.ts +43 -0
- package/plugins/CmsEntryFieldFilterPlugin.js +24 -0
- package/plugins/CmsEntryFieldFilterPlugin.js.map +1 -0
- package/plugins/CmsEntryFieldSortingPlugin.d.ts +42 -0
- package/plugins/CmsEntryFieldSortingPlugin.js +28 -0
- package/plugins/CmsEntryFieldSortingPlugin.js.map +1 -0
- package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +11 -0
- package/plugins/CmsFieldFilterValueTransformPlugin.js +24 -0
- package/plugins/CmsFieldFilterValueTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +4 -0
- package/plugins/index.js +49 -0
- package/plugins/index.js.map +1 -0
- package/types.d.ts +11 -33
- package/types.js +0 -1
- package/types.js.map +1 -0
- package/dynamoDb/path/ref.d.ts +0 -3
- package/dynamoDb/path/ref.js +0 -27
- package/operations/entry/systemFields.d.ts +0 -2
- package/operations/entry/systemFields.js +0 -50
- package/operations/entry/utils.d.ts +0 -31
- 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","MAX_LIST_LIMIT","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","entryId","queryAllParams","options","gte","records","queryAll","map","item","deleteBatch","deleteRevision","latestEntry","initialLatestStorageEntry","publishedStorageEntry","getPublishedRevisionByEntryId","deleteMultipleEntries","entries","revisions","getAllEntryRevisions","ids","revision","version","shift","getRevisionById","getRevisions","getByIds","getLatestByIds","getPublishedByIds","getPreviousRevision","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","getUniqueFieldValues","find","f","fieldValue","Array","isArray","count","Object","a","b","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { DataLoadersHandler } from \"./dataLoaders\";\nimport {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryUniqueValue,\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 DbItem,\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\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { CmsEntryStorageOperations } from \"~/types\";\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\nconst MAX_LIST_LIMIT = 10000;\n\nexport interface CreateEntriesStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\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 id = entry.id || entry.entryId;\n const model = getStorageOperationsModel(initialModel);\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n id,\n locale: model.locale,\n tenant: model.tenant\n }),\n options: {\n gte: \" \"\n }\n };\n\n let records: DbItem<CmsEntry>[] = [];\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 id\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 id\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 deleteMultipleEntries: CmsEntryStorageOperations[\"deleteMultipleEntries\"] = async (\n initialModel,\n params\n ) => {\n const { entries } = params;\n const model = getStorageOperationsModel(initialModel);\n /**\n * First we need all the revisions of the entries we want to delete.\n */\n const revisions = await dataLoaders.getAllEntryRevisions({\n model,\n ids: entries\n });\n /**\n * Then we need to construct the queries for all the revisions and entries.\n */\n const items: Record<string, DocumentClient.WriteRequest>[] = [];\n for (const id of entries) {\n /**\n * Latest item.\n */\n items.push(\n entity.deleteBatch({\n PK: createPartitionKey({\n id,\n locale: model.locale,\n tenant: model.tenant\n }),\n SK: \"L\"\n })\n );\n /**\n * Published item.\n */\n items.push(\n entity.deleteBatch({\n PK: createPartitionKey({\n id,\n locale: model.locale,\n tenant: model.tenant\n }),\n SK: \"P\"\n })\n );\n }\n /**\n * Exact revisions of all the entries\n */\n for (const revision of revisions) {\n items.push(\n entity.deleteBatch({\n PK: createPartitionKey({\n id: revision.id,\n locale: model.locale,\n tenant: model.tenant\n }),\n SK: createRevisionSortKey({\n version: revision.version\n })\n })\n );\n }\n\n await batchWriteAll({\n table: entity.table,\n items\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 =\n initialLimit <= 0 || initialLimit >= MAX_LIST_LIMIT ? MAX_LIST_LIMIT : 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 const getUniqueFieldValues: CmsEntryStorageOperations[\"getUniqueFieldValues\"] = async (\n model,\n params\n ) => {\n const { where, fieldId } = params;\n\n const field = model.fields.find(f => f.fieldId === fieldId);\n if (!field) {\n throw new WebinyError(\n `Could not find field with given \"fieldId\" value.`,\n \"FIELD_NOT_FOUND\",\n {\n fieldId\n }\n );\n }\n\n const { items } = await list(model, {\n where,\n limit: MAX_LIST_LIMIT\n });\n\n const result: Record<string, CmsEntryUniqueValue> = {};\n for (const item of items) {\n const fieldValue = item.values[field.fieldId] as string[] | string | undefined;\n if (!fieldValue) {\n continue;\n }\n const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n if (values.length === 0) {\n continue;\n }\n for (const value of values) {\n result[value] = {\n value,\n count: (result[value]?.count || 0) + 1\n };\n }\n }\n\n return Object.values(result)\n .sort((a, b) => (a.value > b.value ? 1 : b.value > a.value ? -1 : 0))\n .sort((a, b) => b.count - a.count);\n };\n\n return {\n create,\n createRevisionFrom,\n update,\n delete: deleteEntry,\n deleteRevision,\n deleteMultipleEntries,\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 dataLoaders,\n getUniqueFieldValues\n };\n};\n"],"mappings":"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"}
|
package/operations/entry/keys.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.createRevisionSortKey = exports.createPublishedSortKey = exports.createPartitionKey = exports.createLatestSortKey = exports.createGSISortKey = exports.createGSIPartitionKey = void 0;
|
|
7
|
-
|
|
8
8
|
var _utils = require("@webiny/utils");
|
|
9
|
-
|
|
9
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
10
|
const createBasePartitionKey = params => {
|
|
11
11
|
const {
|
|
12
12
|
tenant,
|
|
13
13
|
locale
|
|
14
14
|
} = params;
|
|
15
|
+
if (!tenant) {
|
|
16
|
+
throw new _error.default(`Missing tenant variable when creating entry basePartitionKey`);
|
|
17
|
+
} else if (!locale) {
|
|
18
|
+
throw new _error.default(`Missing tenant variable when creating entry basePartitionKey`);
|
|
19
|
+
}
|
|
15
20
|
return `T#${tenant}#L#${locale}#CMS#CME`;
|
|
16
21
|
};
|
|
17
|
-
|
|
18
22
|
const createPartitionKey = params => {
|
|
19
23
|
const {
|
|
20
24
|
id: initialId
|
|
@@ -24,27 +28,19 @@ const createPartitionKey = params => {
|
|
|
24
28
|
} = (0, _utils.parseIdentifier)(initialId);
|
|
25
29
|
return `${createBasePartitionKey(params)}#CME#${id}`;
|
|
26
30
|
};
|
|
27
|
-
|
|
28
31
|
exports.createPartitionKey = createPartitionKey;
|
|
29
|
-
|
|
30
32
|
const createRevisionSortKey = params => {
|
|
31
33
|
return `REV#${(0, _utils.zeroPad)(params.version)}`;
|
|
32
34
|
};
|
|
33
|
-
|
|
34
35
|
exports.createRevisionSortKey = createRevisionSortKey;
|
|
35
|
-
|
|
36
36
|
const createLatestSortKey = () => {
|
|
37
37
|
return "L";
|
|
38
38
|
};
|
|
39
|
-
|
|
40
39
|
exports.createLatestSortKey = createLatestSortKey;
|
|
41
|
-
|
|
42
40
|
const createPublishedSortKey = () => {
|
|
43
41
|
return "P";
|
|
44
42
|
};
|
|
45
|
-
|
|
46
43
|
exports.createPublishedSortKey = createPublishedSortKey;
|
|
47
|
-
|
|
48
44
|
const createGSIPartitionKey = (params, type) => {
|
|
49
45
|
const {
|
|
50
46
|
modelId
|
|
@@ -52,11 +48,8 @@ const createGSIPartitionKey = (params, type) => {
|
|
|
52
48
|
const partitionKey = createBasePartitionKey(params);
|
|
53
49
|
return `${partitionKey}#M#${modelId}#${type}`;
|
|
54
50
|
};
|
|
55
|
-
|
|
56
51
|
exports.createGSIPartitionKey = createGSIPartitionKey;
|
|
57
|
-
|
|
58
52
|
const createGSISortKey = params => {
|
|
59
53
|
return params.id;
|
|
60
54
|
};
|
|
61
|
-
|
|
62
55
|
exports.createGSISortKey = createGSISortKey;
|
|
@@ -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,MAA8B,IAAa;EACvE,MAAM;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGF,MAAM;EACjC,IAAI,CAACC,MAAM,EAAE;IACT,MAAM,IAAIE,cAAW,CAAE,8DAA6D,CAAC;EACzF,CAAC,MAAM,IAAI,CAACD,MAAM,EAAE;IAChB,MAAM,IAAIC,cAAW,CAAE,8DAA6D,CAAC;EACzF;EACA,OAAQ,KAAIF,MAAO,MAAKC,MAAO,UAAS;AAC5C,CAAC;AAKM,MAAME,kBAAkB,GAAIJ,MAA0B,IAAa;EACtE,MAAM;IAAEK,EAAE,EAAEC;EAAU,CAAC,GAAGN,MAAM;EAChC,MAAM;IAAEK;EAAG,CAAC,GAAG,IAAAE,sBAAe,EAACD,SAAS,CAAC;EACzC,OAAQ,GAAEP,sBAAsB,CAACC,MAAM,CAAE,QAAOK,EAAG,EAAC;AACxD,CAAC;AAAC;AAKK,MAAMG,qBAAqB,GAAIR,MAAqB,IAAa;EACpE,OAAQ,OAAM,IAAAS,cAAO,EAACT,MAAM,CAACU,OAAO,CAAE,EAAC;AAC3C,CAAC;AAAC;AAEK,MAAMC,mBAAmB,GAAG,MAAc;EAC7C,OAAO,GAAG;AACd,CAAC;AAAC;AAEK,MAAMC,sBAAsB,GAAG,MAAc;EAChD,OAAO,GAAG;AACd,CAAC;AAAC;AAOK,MAAMC,qBAAqB,GAAG,CAACb,MAA6B,EAAEc,IAAqB,KAAK;EAC3F,MAAM;IAAEC;EAAQ,CAAC,GAAGf,MAAM;EAC1B,MAAMgB,YAAY,GAAGjB,sBAAsB,CAACC,MAAM,CAAC;EACnD,OAAQ,GAAEgB,YAAa,MAAKD,OAAQ,IAAGD,IAAK,EAAC;AACjD,CAAC;AAAC;AAKK,MAAMG,gBAAgB,GAAIjB,MAAwB,IAAa;EAClE,OAAOA,MAAM,CAACK,EAAE;AACpB,CAAC;AAAC"}
|
|
@@ -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
|
-
|
|
4
|
+
interface CreateGroupsStorageOperationsParams {
|
|
5
5
|
entity: Entity<any>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
}
|
|
8
|
-
export declare const createGroupsStorageOperations: (params:
|
|
8
|
+
export declare const createGroupsStorageOperations: (params: CreateGroupsStorageOperationsParams) => CmsGroupStorageOperations;
|
|
9
|
+
export {};
|
|
@@ -1,32 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createGroupsStorageOperations = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
15
|
-
|
|
16
11
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
17
|
-
|
|
18
12
|
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
19
|
-
|
|
20
13
|
var _filter = require("@webiny/db-dynamodb/utils/filter");
|
|
21
|
-
|
|
22
14
|
var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin");
|
|
23
|
-
|
|
24
15
|
var _sort = require("@webiny/db-dynamodb/utils/sort");
|
|
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
16
|
const createPartitionKey = params => {
|
|
31
17
|
const {
|
|
32
18
|
tenant,
|
|
@@ -34,44 +20,37 @@ const createPartitionKey = params => {
|
|
|
34
20
|
} = params;
|
|
35
21
|
return `T#${tenant}#L#${locale}#CMS#CMG`;
|
|
36
22
|
};
|
|
37
|
-
|
|
38
23
|
const createSortKeys = params => {
|
|
39
24
|
const {
|
|
40
25
|
id
|
|
41
26
|
} = params;
|
|
42
27
|
return id;
|
|
43
28
|
};
|
|
44
|
-
|
|
45
29
|
const createKeys = params => {
|
|
46
30
|
return {
|
|
47
31
|
PK: createPartitionKey(params),
|
|
48
32
|
SK: createSortKeys(params)
|
|
49
33
|
};
|
|
50
34
|
};
|
|
51
|
-
|
|
52
35
|
const createType = () => {
|
|
53
36
|
return "cms.group";
|
|
54
37
|
};
|
|
55
|
-
|
|
56
38
|
const createGroupsStorageOperations = params => {
|
|
57
39
|
const {
|
|
58
40
|
entity,
|
|
59
41
|
plugins
|
|
60
42
|
} = params;
|
|
61
43
|
const filteringPlugins = plugins.byType(_ValueFilterPlugin.ValueFilterPlugin.type);
|
|
62
|
-
|
|
63
44
|
if (filteringPlugins.length === 0) {
|
|
64
45
|
throw new _error.default("DynamoDB filtering plugins not loaded.", "MISSING_DYNAMODB_FILTERING_PLUGINS");
|
|
65
46
|
}
|
|
66
|
-
|
|
67
47
|
const create = async params => {
|
|
68
48
|
const {
|
|
69
49
|
group
|
|
70
50
|
} = params;
|
|
71
51
|
const keys = createKeys(group);
|
|
72
|
-
|
|
73
52
|
try {
|
|
74
|
-
await entity.put(
|
|
53
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
|
|
75
54
|
TYPE: createType()
|
|
76
55
|
}, keys));
|
|
77
56
|
return group;
|
|
@@ -83,16 +62,13 @@ const createGroupsStorageOperations = params => {
|
|
|
83
62
|
});
|
|
84
63
|
}
|
|
85
64
|
};
|
|
86
|
-
|
|
87
65
|
const update = async params => {
|
|
88
66
|
const {
|
|
89
|
-
group
|
|
90
|
-
original
|
|
67
|
+
group
|
|
91
68
|
} = params;
|
|
92
69
|
const keys = createKeys(group);
|
|
93
|
-
|
|
94
70
|
try {
|
|
95
|
-
await entity.put(
|
|
71
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
|
|
96
72
|
TYPE: createType()
|
|
97
73
|
}, keys));
|
|
98
74
|
return group;
|
|
@@ -100,19 +76,16 @@ const createGroupsStorageOperations = params => {
|
|
|
100
76
|
throw new _error.default(ex.message || "Could not update group.", ex.code || "UPDATE_GROUP_ERROR", {
|
|
101
77
|
error: ex,
|
|
102
78
|
group,
|
|
103
|
-
original,
|
|
104
79
|
keys
|
|
105
80
|
});
|
|
106
81
|
}
|
|
107
82
|
};
|
|
108
|
-
|
|
109
83
|
const deleteGroup = async params => {
|
|
110
84
|
const {
|
|
111
85
|
group
|
|
112
|
-
} = params;
|
|
113
|
-
|
|
86
|
+
} = params;
|
|
87
|
+
// TODO make sure that group has locale and tenant on it - add it in the crud just in case
|
|
114
88
|
const keys = createKeys(group);
|
|
115
|
-
|
|
116
89
|
try {
|
|
117
90
|
await entity.delete(keys);
|
|
118
91
|
return group;
|
|
@@ -124,10 +97,8 @@ const createGroupsStorageOperations = params => {
|
|
|
124
97
|
});
|
|
125
98
|
}
|
|
126
99
|
};
|
|
127
|
-
|
|
128
100
|
const get = async params => {
|
|
129
101
|
const keys = createKeys(params);
|
|
130
|
-
|
|
131
102
|
try {
|
|
132
103
|
const group = await (0, _get.get)({
|
|
133
104
|
entity,
|
|
@@ -135,14 +106,13 @@ const createGroupsStorageOperations = params => {
|
|
|
135
106
|
});
|
|
136
107
|
return (0, _cleanup.cleanupItem)(entity, group);
|
|
137
108
|
} catch (ex) {
|
|
138
|
-
throw new _error.default(ex.message || "Could not get group.", ex.code || "GET_GROUP_ERROR",
|
|
109
|
+
throw new _error.default(ex.message || "Could not get group.", ex.code || "GET_GROUP_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
139
110
|
error: ex
|
|
140
111
|
}, params), {}, {
|
|
141
112
|
keys
|
|
142
113
|
}));
|
|
143
114
|
}
|
|
144
115
|
};
|
|
145
|
-
|
|
146
116
|
const list = async params => {
|
|
147
117
|
const {
|
|
148
118
|
sort,
|
|
@@ -156,36 +126,31 @@ const createGroupsStorageOperations = params => {
|
|
|
156
126
|
}
|
|
157
127
|
};
|
|
158
128
|
let records = [];
|
|
159
|
-
|
|
160
129
|
try {
|
|
161
130
|
records = await (0, _query.queryAll)(queryAllParams);
|
|
162
131
|
} catch (ex) {
|
|
163
|
-
throw new _error.default(ex.message || "Could not list groups.", ex.code || "LIST_GROUP_ERROR",
|
|
132
|
+
throw new _error.default(ex.message || "Could not list groups.", ex.code || "LIST_GROUP_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
164
133
|
error: ex
|
|
165
134
|
}, params), {}, {
|
|
166
135
|
sort,
|
|
167
136
|
where
|
|
168
137
|
}));
|
|
169
138
|
}
|
|
170
|
-
|
|
171
139
|
const filteredItems = (0, _filter.filterItems)({
|
|
172
140
|
items: records,
|
|
173
141
|
where,
|
|
174
142
|
fields: [],
|
|
175
143
|
plugins
|
|
176
144
|
});
|
|
177
|
-
|
|
178
145
|
if (!sort || sort.length === 0) {
|
|
179
146
|
return filteredItems;
|
|
180
147
|
}
|
|
181
|
-
|
|
182
148
|
return (0, _sort.sortItems)({
|
|
183
149
|
items: filteredItems,
|
|
184
150
|
sort,
|
|
185
151
|
fields: []
|
|
186
152
|
});
|
|
187
153
|
};
|
|
188
|
-
|
|
189
154
|
return {
|
|
190
155
|
create,
|
|
191
156
|
update,
|
|
@@ -194,5 +159,4 @@ const createGroupsStorageOperations = params => {
|
|
|
194
159
|
list
|
|
195
160
|
};
|
|
196
161
|
};
|
|
197
|
-
|
|
198
162
|
exports.createGroupsStorageOperations = createGroupsStorageOperations;
|
|
@@ -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":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CmsModelStorageOperations } from "@webiny/api-headless-cms/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
|
-
|
|
3
|
+
interface CreateModelsStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
|
6
|
-
export declare const createModelsStorageOperations: (params:
|
|
6
|
+
export declare const createModelsStorageOperations: (params: CreateModelsStorageOperationsParams) => CmsModelStorageOperations;
|
|
7
|
+
export {};
|
|
@@ -1,62 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createModelsStorageOperations = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
15
|
-
|
|
16
11
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
17
|
-
|
|
18
12
|
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
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
13
|
const createPartitionKey = params => {
|
|
25
14
|
const {
|
|
26
15
|
tenant,
|
|
27
16
|
locale
|
|
28
17
|
} = params;
|
|
18
|
+
if (!tenant) {
|
|
19
|
+
throw new _error.default(`Missing tenant variable when creating model partitionKey.`);
|
|
20
|
+
} else if (!locale) {
|
|
21
|
+
throw new _error.default(`Missing locale variable when creating model partitionKey.`);
|
|
22
|
+
}
|
|
29
23
|
return `T#${tenant}#L#${locale}#CMS#CM`;
|
|
30
24
|
};
|
|
31
|
-
|
|
32
25
|
const createSortKey = params => {
|
|
33
26
|
return params.modelId;
|
|
34
27
|
};
|
|
35
|
-
|
|
36
28
|
const createKeys = params => {
|
|
37
29
|
return {
|
|
38
30
|
PK: createPartitionKey(params),
|
|
39
31
|
SK: createSortKey(params)
|
|
40
32
|
};
|
|
41
33
|
};
|
|
42
|
-
|
|
43
34
|
const createType = () => {
|
|
44
35
|
return "cms.model";
|
|
45
36
|
};
|
|
46
|
-
|
|
47
37
|
const createModelsStorageOperations = params => {
|
|
48
38
|
const {
|
|
49
39
|
entity
|
|
50
40
|
} = params;
|
|
51
|
-
|
|
52
41
|
const create = async params => {
|
|
53
42
|
const {
|
|
54
43
|
model
|
|
55
44
|
} = params;
|
|
56
45
|
const keys = createKeys(model);
|
|
57
|
-
|
|
58
46
|
try {
|
|
59
|
-
await entity.put(
|
|
47
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _cleanup.cleanupItem)(entity, model)), keys), {}, {
|
|
60
48
|
TYPE: createType()
|
|
61
49
|
}));
|
|
62
50
|
return model;
|
|
@@ -68,50 +56,42 @@ const createModelsStorageOperations = params => {
|
|
|
68
56
|
});
|
|
69
57
|
}
|
|
70
58
|
};
|
|
71
|
-
|
|
72
59
|
const update = async params => {
|
|
73
60
|
const {
|
|
74
|
-
original,
|
|
75
61
|
model
|
|
76
62
|
} = params;
|
|
77
63
|
const keys = createKeys(model);
|
|
78
|
-
|
|
79
64
|
try {
|
|
80
|
-
await entity.put(
|
|
65
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _cleanup.cleanupItem)(entity, model)), keys), {}, {
|
|
81
66
|
TYPE: createType()
|
|
82
67
|
}));
|
|
83
68
|
return model;
|
|
84
69
|
} catch (ex) {
|
|
85
|
-
throw new _error.default(ex.
|
|
70
|
+
throw new _error.default(ex.message || "Could not update model.", ex.code || "MODEL_UPDATE_ERROR", {
|
|
86
71
|
error: ex,
|
|
87
72
|
model,
|
|
88
|
-
original,
|
|
89
73
|
keys
|
|
90
74
|
});
|
|
91
75
|
}
|
|
92
76
|
};
|
|
93
|
-
|
|
94
77
|
const deleteModel = async params => {
|
|
95
78
|
const {
|
|
96
79
|
model
|
|
97
80
|
} = params;
|
|
98
81
|
const keys = createKeys(model);
|
|
99
|
-
|
|
100
82
|
try {
|
|
101
83
|
await entity.delete(keys);
|
|
102
84
|
return model;
|
|
103
85
|
} catch (ex) {
|
|
104
|
-
throw new _error.default(ex.
|
|
86
|
+
throw new _error.default(ex.message || "Could not delete model.", ex.code || "MODEL_DELETE_ERROR", {
|
|
105
87
|
error: ex,
|
|
106
88
|
model,
|
|
107
89
|
keys
|
|
108
90
|
});
|
|
109
91
|
}
|
|
110
92
|
};
|
|
111
|
-
|
|
112
93
|
const get = async params => {
|
|
113
94
|
const keys = createKeys(params);
|
|
114
|
-
|
|
115
95
|
try {
|
|
116
96
|
const item = await (0, _get.get)({
|
|
117
97
|
entity,
|
|
@@ -119,13 +99,12 @@ const createModelsStorageOperations = params => {
|
|
|
119
99
|
});
|
|
120
100
|
return (0, _cleanup.cleanupItem)(entity, item);
|
|
121
101
|
} catch (ex) {
|
|
122
|
-
throw new _error.default(ex.
|
|
102
|
+
throw new _error.default(ex.message || "Could not get model.", ex.code || "MODEL_GET_ERROR", {
|
|
123
103
|
error: ex,
|
|
124
104
|
keys
|
|
125
105
|
});
|
|
126
106
|
}
|
|
127
107
|
};
|
|
128
|
-
|
|
129
108
|
const list = async params => {
|
|
130
109
|
const {
|
|
131
110
|
where
|
|
@@ -137,18 +116,16 @@ const createModelsStorageOperations = params => {
|
|
|
137
116
|
gte: " "
|
|
138
117
|
}
|
|
139
118
|
};
|
|
140
|
-
|
|
141
119
|
try {
|
|
142
120
|
const items = await (0, _query.queryAll)(queryAllParams);
|
|
143
121
|
return (0, _cleanup.cleanupItems)(entity, items);
|
|
144
122
|
} catch (ex) {
|
|
145
|
-
throw new _error.default(ex.
|
|
123
|
+
throw new _error.default(ex.message || "Could not list models.", ex.code || "MODEL_LIST_ERROR", {
|
|
146
124
|
error: ex,
|
|
147
125
|
partitionKey: queryAllParams.partitionKey
|
|
148
126
|
});
|
|
149
127
|
}
|
|
150
128
|
};
|
|
151
|
-
|
|
152
129
|
return {
|
|
153
130
|
create,
|
|
154
131
|
update,
|
|
@@ -157,5 +134,4 @@ const createModelsStorageOperations = params => {
|
|
|
157
134
|
list
|
|
158
135
|
};
|
|
159
136
|
};
|
|
160
|
-
|
|
161
137
|
exports.createModelsStorageOperations = createModelsStorageOperations;
|