dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
28 lines (27 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.joinDedupedConditions = exports.getComparedSubSchemas = void 0;
const index_js_1 = require("../../../../../errors/index.js");
const isObject_js_1 = require("../../../../../utils/validation/isObject.js");
const isString_js_1 = require("../../../../../utils/validation/isString.js");
const getComparedSubSchemas = (schemaFinder, comparedValue, transform) => (0, isObject_js_1.isObject)(comparedValue) &&
'attr' in comparedValue &&
(0, isString_js_1.isString)(comparedValue.attr) &&
/**
* @debt bug "Adding this check as syntax can conflict with `any` attribute w. object values. Use symbol instead"
*/
transform !== true
? schemaFinder.search(comparedValue.attr)
: undefined;
exports.getComparedSubSchemas = getComparedSubSchemas;
const joinDedupedConditions = (dedupedConditions, attributePath) => {
const [conditionsHead, ...conditionsTail] = dedupedConditions.values;
if (conditionsHead === undefined) {
throw new index_js_1.DynamoDBToolboxError('actions.invalidExpressionAttributePath', {
message: `Unable to match expression attribute path with schema: ${attributePath}`,
payload: { attributePath }
});
}
return conditionsTail.length > 0 ? { or: [conditionsHead, ...conditionsTail] } : conditionsHead;
};
exports.joinDedupedConditions = joinDedupedConditions;