UNPKG

dynamodb-toolbox

Version:

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

36 lines (35 loc) 1.54 kB
"use strict"; 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;