dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
36 lines (35 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSelectOption = exports.selectOptionsSet = exports.selectOptions = void 0;
const index_js_1 = require("../errors/index.js");
exports.selectOptions = [
'ALL_ATTRIBUTES',
'ALL_PROJECTED_ATTRIBUTES',
'COUNT',
'SPECIFIC_ATTRIBUTES'
];
exports.selectOptionsSet = new Set(exports.selectOptions);
const parseSelectOption = (select, { index, attributes } = {}) => {
if (!exports.selectOptionsSet.has(select)) {
throw new index_js_1.DynamoDBToolboxError('options.invalidSelectOption', {
message: `Invalid select option: '${String(select)}'. 'select' must be one of: ${[
...exports.selectOptionsSet
].join(', ')}.`,
payload: { select }
});
}
if (select === 'ALL_PROJECTED_ATTRIBUTES' && index === undefined) {
throw new index_js_1.DynamoDBToolboxError('options.invalidSelectOption', {
message: `Invalid select option: '${String(select)}'. Please provide an 'index' option.`,
payload: { select }
});
}
if (attributes !== undefined && select !== 'SPECIFIC_ATTRIBUTES') {
throw new index_js_1.DynamoDBToolboxError('options.invalidSelectOption', {
message: `Invalid select option: '${String(select)}'. Select must be 'SPECIFIC_ATTRIBUTES' if a filter expression has been provided.`,
payload: { select }
});
}
return select;
};
exports.parseSelectOption = parseSelectOption;