UNPKG

dynamodb-toolbox

Version:

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

29 lines (28 loc) 1.46 kB
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; };