UNPKG

dynamodb-toolbox

Version:

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

28 lines (27 loc) 1.44 kB
"use strict"; 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;