dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
29 lines (28 loc) • 1.46 kB
JavaScript
import { EntityConditionParser } from '../../../entity/actions/parseCondition/index.js';
import { rejectExtraOptions } from '../../../options/rejectExtraOptions.js';
import { parseReturnValuesOnConditionFalseOption } from '../../../options/returnValuesOnConditionFalse.js';
import { parseTableNameOption } from '../../../options/tableName.js';
import { isEmpty } from '../../../utils/isEmpty.js';
export const parseOptions = (entity, condition, options = {}) => {
const { returnValuesOnConditionFalse, tableName, ...extraOptions } = options;
rejectExtraOptions(extraOptions);
const { ExpressionAttributeNames, ExpressionAttributeValues, ConditionExpression } = entity
.build(EntityConditionParser)
.parse(condition);
const transactionOptions = { ConditionExpression };
if (!isEmpty(ExpressionAttributeNames)) {
transactionOptions.ExpressionAttributeNames = ExpressionAttributeNames;
}
if (!isEmpty(ExpressionAttributeValues)) {
transactionOptions.ExpressionAttributeValues = ExpressionAttributeValues;
}
if (returnValuesOnConditionFalse !== undefined) {
transactionOptions.ReturnValuesOnConditionCheckFailure =
parseReturnValuesOnConditionFalseOption(returnValuesOnConditionFalse);
}
if (tableName !== undefined) {
// tableName is a meta-option, validated but not used here
parseTableNameOption(tableName);
}
return transactionOptions;
};