UNPKG

dynamodb-toolbox

Version:

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

52 lines (51 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SetSchema = void 0; const index_js_1 = require("../../errors/index.js"); const checkSchemaProps_js_1 = require("../utils/checkSchemaProps.js"); const hasDefinedDefault_js_1 = require("../utils/hasDefinedDefault.js"); class SetSchema { constructor(elements, props) { this.type = 'set'; this.elements = elements; this.props = props; } get checked() { return Object.isFrozen(this.props); } check(path) { if (this.checked) { return; } (0, checkSchemaProps_js_1.checkSchemaProps)(this.props, path); const { required, hidden, savedAs } = this.elements.props; if (required !== undefined && required !== 'atLeastOnce') { throw new index_js_1.DynamoDBToolboxError('schema.set.optionalElements', { message: `Invalid set elements${path !== undefined ? ` at path '${path}'` : ''}: Set elements must be required.`, path }); } if (hidden !== undefined && hidden !== false) { throw new index_js_1.DynamoDBToolboxError('schema.set.hiddenElements', { message: `Invalid set elements${path !== undefined ? ` at path '${path}'` : ''}: Set elements cannot be hidden.`, path }); } if (savedAs !== undefined) { throw new index_js_1.DynamoDBToolboxError('schema.set.savedAsElements', { message: `Invalid set elements${path !== undefined ? ` at path '${path}'` : ''}: Set elements cannot be renamed (have savedAs prop).`, path }); } if ((0, hasDefinedDefault_js_1.hasDefinedDefault)(this.elements)) { throw new index_js_1.DynamoDBToolboxError('schema.set.defaultedElements', { message: `Invalid set elements${path !== undefined ? ` at path '${path}'` : ''}: Set elements cannot have default or linked values.`, path }); } this.elements.check(`${path !== null && path !== void 0 ? path : ''}[x]`); Object.freeze(this.props); Object.freeze(this.elements); } } exports.SetSchema = SetSchema;