UNPKG

dynamodb-toolbox

Version:

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

51 lines (50 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConditionCheck = void 0; const index_js_1 = require("../../../entity/actions/parse/index.js"); const index_js_2 = require("../../../errors/index.js"); const transaction_js_1 = require("../transactWrite/transaction.js"); const constants_js_1 = require("./constants.js"); const options_js_1 = require("./options.js"); class ConditionCheck extends transaction_js_1.WriteTransaction { constructor(entity, key, condition, options = {}) { super(entity); this[constants_js_1.$key] = key; this[constants_js_1.$condition] = condition; this[constants_js_1.$options] = options; } key(nextKey) { return new ConditionCheck(this.entity, nextKey, this[constants_js_1.$condition], this[constants_js_1.$options]); } condition(nextCondition) { return new ConditionCheck(this.entity, this[constants_js_1.$key], nextCondition, this[constants_js_1.$options]); } options(nextOptions) { return new ConditionCheck(this.entity, this[constants_js_1.$key], this[constants_js_1.$condition], typeof nextOptions === 'function' ? nextOptions(this[constants_js_1.$options]) : nextOptions); } params() { var _a; if (!this[constants_js_1.$key]) { throw new index_js_2.DynamoDBToolboxError('actions.incompleteAction', { message: 'ConditionCheck incomplete: Missing "key" property' }); } if (!this[constants_js_1.$condition]) { throw new index_js_2.DynamoDBToolboxError('actions.incompleteAction', { message: 'ConditionCheck incomplete: Missing "condition" property' }); } const options = this[constants_js_1.$options]; const { key } = this.entity.build(index_js_1.EntityParser).parse(this[constants_js_1.$key], { mode: 'key' }); const awsOptions = (0, options_js_1.parseOptions)(this.entity, this[constants_js_1.$condition], options); return { ConditionCheck: { TableName: (_a = options.tableName) !== null && _a !== void 0 ? _a : this.entity.table.getName(), Key: key, ...awsOptions } }; } } exports.ConditionCheck = ConditionCheck; ConditionCheck.actionName = 'conditionCheck';