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