dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
56 lines (55 loc) • 2.28 kB
JavaScript
;
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;