dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
39 lines (38 loc) • 2.15 kB
JavaScript
import { EntityConditionParser } from '../../../../entity/actions/parseCondition/index.js';
import { parseCapacityOption } from '../../../../options/capacity.js';
import { parseMetricsOption } from '../../../../options/metrics.js';
import { rejectExtraOptions } from '../../../../options/rejectExtraOptions.js';
import { parseReturnValuesOption } from '../../../../options/returnValues.js';
import { parseReturnValuesOnConditionFalseOption } from '../../../../options/returnValuesOnConditionFalse.js';
import { parseTableNameOption } from '../../../../options/tableName.js';
import { updateAttributesCommandReturnValuesOptionsSet } from '../options.js';
export const parseUpdateAttributesOptions = (entity, updateItemOptions) => {
const commandOptions = {};
const { capacity, metrics, returnValues, returnValuesOnConditionFalse, condition, tableName, ...extraOptions } = updateItemOptions;
rejectExtraOptions(extraOptions);
if (capacity !== undefined) {
commandOptions.ReturnConsumedCapacity = parseCapacityOption(capacity);
}
if (metrics !== undefined) {
commandOptions.ReturnItemCollectionMetrics = parseMetricsOption(metrics);
}
if (returnValues !== undefined) {
commandOptions.ReturnValues = parseReturnValuesOption(updateAttributesCommandReturnValuesOptionsSet, returnValues);
}
if (returnValuesOnConditionFalse !== undefined) {
commandOptions.ReturnValuesOnConditionCheckFailure = parseReturnValuesOnConditionFalseOption(returnValuesOnConditionFalse);
}
if (condition !== undefined) {
const { ExpressionAttributeNames, ExpressionAttributeValues, ConditionExpression } = entity
.build(EntityConditionParser)
.parse(condition);
commandOptions.ExpressionAttributeNames = ExpressionAttributeNames;
commandOptions.ExpressionAttributeValues = ExpressionAttributeValues;
commandOptions.ConditionExpression = ConditionExpression;
}
if (tableName !== undefined) {
// tableName is a meta-option, validated but not used here
parseTableNameOption(tableName);
}
return commandOptions;
};