UNPKG

dynamodb-toolbox

Version:

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

56 lines (55 loc) 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.expressNotCondition = exports.expressAndCondition = exports.expressOrCondition = void 0; const expressCondition_js_1 = require("../expressCondition.js"); const expressOrCondition = (condition, prefix = '', state) => { let ConditionExpression = ''; const { or } = condition; const [orHead, ...orTail] = or; if (orTail.length === 0) { return (0, expressCondition_js_1.expressCondition)(orHead, prefix, state); } ConditionExpression += '('; ConditionExpression += or .map(cond => (0, expressCondition_js_1.expressCondition)(cond, prefix, state).ConditionExpression) .join(') OR ('); ConditionExpression += ')'; return { ConditionExpression, ExpressionAttributeNames: state.ExpressionAttributeNames, ExpressionAttributeValues: state.ExpressionAttributeValues }; }; exports.expressOrCondition = expressOrCondition; const expressAndCondition = (condition, prefix = '', state) => { let ConditionExpression = ''; const { and } = condition; const [andHead, ...andTail] = and; if (andTail.length === 0) { return (0, expressCondition_js_1.expressCondition)(andHead, prefix, state); } ConditionExpression += '('; ConditionExpression += and .map(cond => (0, expressCondition_js_1.expressCondition)(cond, prefix, state).ConditionExpression) .join(') AND ('); ConditionExpression += ')'; return { ConditionExpression, ExpressionAttributeNames: state.ExpressionAttributeNames, ExpressionAttributeValues: state.ExpressionAttributeValues }; }; exports.expressAndCondition = expressAndCondition; const expressNotCondition = (condition, prefix = '', state) => { let ConditionExpression = ''; const { not } = condition; ConditionExpression += 'NOT ('; ConditionExpression += (0, expressCondition_js_1.expressCondition)(not, prefix, state).ConditionExpression; ConditionExpression += ')'; return { ConditionExpression, ExpressionAttributeNames: state.ExpressionAttributeNames, ExpressionAttributeValues: state.ExpressionAttributeValues }; }; exports.expressNotCondition = expressNotCondition;