UNPKG

dynamodb-toolbox

Version:

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

30 lines (29 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseEntityAttrFilterOption = void 0; const dynamoDBToolboxError_js_1 = require("../errors/dynamoDBToolboxError.js"); const isBoolean_js_1 = require("../utils/validation/isBoolean.js"); const parseEntityAttrFilterOption = (entityAttrFilter, entities, filters) => { if (!(0, isBoolean_js_1.isBoolean)(entityAttrFilter)) { throw new dynamoDBToolboxError_js_1.DynamoDBToolboxError('options.invalidEntityAttrFilterOption', { message: `Invalid 'entityAttrFilter' option: '${String(entityAttrFilter)}'. 'entityAttrFilter' must be a boolean.`, payload: { entityAttrFilter } }); } const entityWithoutEntityAttr = entities.find(entity => !entity.entityAttribute); if (entityAttrFilter && entityWithoutEntityAttr !== undefined) { throw new dynamoDBToolboxError_js_1.DynamoDBToolboxError('options.invalidEntityAttrFilterOption', { message: `Invalid 'entityAttrFilter' option: '${String(entityAttrFilter)}'. 'entityAttrFilter' cannot be true as ${entityWithoutEntityAttr.entityName} entity has no entity attribute.`, payload: { entityAttrFilter } }); } const entitiesWithFilter = entities.filter(entity => filters[entity.entityName] !== undefined); if (!entityAttrFilter && entitiesWithFilter.length > 1) { throw new dynamoDBToolboxError_js_1.DynamoDBToolboxError('options.invalidEntityAttrFilterOption', { message: `Invalid 'entityAttrFilter' option: '${String(entityAttrFilter)}'. 'entityAttrFilter' must be true when applying multiple filters.`, payload: { entityAttrFilter } }); } return entityAttrFilter; }; exports.parseEntityAttrFilterOption = parseEntityAttrFilterOption;