UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

40 lines (39 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateAttributesParams = void 0; const index_js_1 = require("../../../../entity/actions/parse/index.js"); const index_js_2 = require("../../../../entity/actions/update/expressUpdate/index.js"); const isEmpty_js_1 = require("../../../../utils/isEmpty.js"); const omit_js_1 = require("../../../../utils/omit.js"); const index_js_3 = require("./extension/index.js"); const parseUpdateAttributesOptions_js_1 = require("./parseUpdateAttributesOptions.js"); const updateAttributesParams = (entity, input, options = {}) => { var _a; const { parsedItem, item, key } = entity.build(index_js_1.EntityParser).parse(input, { mode: 'update', parseExtension: index_js_3.parseUpdateAttributesExtension }); const { ExpressionAttributeNames: updateExpressionAttributeNames, ExpressionAttributeValues: updateExpressionAttributeValues, ...update } = (0, index_js_2.expressUpdate)(entity, (0, omit_js_1.omit)(item, ...Object.keys(key))); const { ExpressionAttributeNames: optionsExpressionAttributeNames, ExpressionAttributeValues: optionsExpressionAttributeValues, ...awsOptions } = (0, parseUpdateAttributesOptions_js_1.parseUpdateAttributesOptions)(entity, options); const ExpressionAttributeNames = { ...optionsExpressionAttributeNames, ...updateExpressionAttributeNames }; const ExpressionAttributeValues = { ...optionsExpressionAttributeValues, ...updateExpressionAttributeValues }; return { TableName: (_a = options.tableName) !== null && _a !== void 0 ? _a : entity.table.getName(), /** * @debt type "TODO: Rework extensions & not cast here (use `ParsedItem<ENTITY, { extension: UpdateItemExtension }>`)" */ ToolboxItem: parsedItem, Key: key, ...update, ...awsOptions, ...(!(0, isEmpty_js_1.isEmpty)(ExpressionAttributeNames) ? { ExpressionAttributeNames } : {}), ...(!(0, isEmpty_js_1.isEmpty)(ExpressionAttributeValues) ? { ExpressionAttributeValues } : {}) }; }; exports.updateAttributesParams = updateAttributesParams;