dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
39 lines (38 loc) • 1.56 kB
JavaScript
import { EntityParser } from '../../../entity/actions/parse/index.js';
import { DynamoDBToolboxError } from '../../../errors/index.js';
import { WriteTransaction } from '../transactWrite/transaction.js';
import { $item, $options } from './constants.js';
import { parseOptions } from './options.js';
export class PutTransaction extends WriteTransaction {
constructor(entity, item, options = {}) {
super(entity);
this[$item] = item;
this[$options] = options;
}
item(nextItem) {
return new PutTransaction(this.entity, nextItem, this[$options]);
}
options(nextOptions) {
return new PutTransaction(this.entity, this[$item], typeof nextOptions === 'function' ? nextOptions(this[$options]) : nextOptions);
}
params() {
var _a;
if (!this[$item]) {
throw new DynamoDBToolboxError('actions.incompleteAction', {
message: 'PutTransaction incomplete: Missing "item" property'
});
}
const options = this[$options];
const { parsedItem, item } = this.entity.build(EntityParser).parse(this[$item]);
const awsOptions = parseOptions(this.entity, options);
return {
ToolboxItem: parsedItem,
Put: {
TableName: (_a = options === null || options === void 0 ? void 0 : options.tableName) !== null && _a !== void 0 ? _a : this.entity.table.getName(),
Item: item,
...awsOptions
}
};
}
}
PutTransaction.actionName = 'transactPut';