dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
51 lines (50 loc) • 2.36 kB
JavaScript
"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';