dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
44 lines (43 loc) • 2.32 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 { isEmpty } from '../../../../utils/isEmpty.js';
import { deleteItemCommandReturnValuesOptionsSet } from '../options.js';
export const parseDeleteItemOptions = (entity, deleteItemOptions) => {
const commandOptions = {};
const { capacity, metrics, returnValues, returnValuesOnConditionFalse, condition, tableName, ...extraOptions } = deleteItemOptions;
rejectExtraOptions(extraOptions);
if (capacity !== undefined) {
commandOptions.ReturnConsumedCapacity = parseCapacityOption(capacity);
}
if (metrics !== undefined) {
commandOptions.ReturnItemCollectionMetrics = parseMetricsOption(metrics);
}
if (returnValues !== undefined) {
commandOptions.ReturnValues = parseReturnValuesOption(deleteItemCommandReturnValuesOptionsSet, returnValues);
}
if (returnValuesOnConditionFalse !== undefined) {
commandOptions.ReturnValuesOnConditionCheckFailure = parseReturnValuesOnConditionFalseOption(returnValuesOnConditionFalse);
}
if (condition !== undefined) {
const { ExpressionAttributeNames, ExpressionAttributeValues, ConditionExpression } = entity
.build(EntityConditionParser)
.parse(condition);
if (!isEmpty(ExpressionAttributeNames)) {
commandOptions.ExpressionAttributeNames = ExpressionAttributeNames;
}
if (!isEmpty(ExpressionAttributeValues)) {
commandOptions.ExpressionAttributeValues = ExpressionAttributeValues;
}
commandOptions.ConditionExpression = ConditionExpression;
}
if (tableName !== undefined) {
// tableName is a meta-option, validated but not used here
parseTableNameOption(tableName);
}
return commandOptions;
};