dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
40 lines (39 loc) • 2.17 kB
JavaScript
;
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;