UNPKG

@env0/dynamo-easy

Version:

DynamoDB client for NodeJS and browser with a fluent api to build requests. We take care of the type mapping between JS and DynamoDB, customizable trough typescript decorators.

51 lines 1.78 kB
import { DynamoDbWrapper } from '../dynamo-db-wrapper'; /** * Request class for the TransactWriteItems operation. Write up to 10 items to one or many tables in a transaction. */ export class TransactWriteRequest { get dynamoDB() { return this.dynamoDBWrapper.dynamoDB; } constructor(dynamoDB) { this.dynamoDBWrapper = new DynamoDbWrapper(dynamoDB); this.params = { TransactItems: [], }; } returnConsumedCapacity(level) { this.params.ReturnConsumedCapacity = level; return this; } /** * return item collection metrics. */ returnItemCollectionMetrics(returnItemCollectionMetrics) { this.params.ReturnItemCollectionMetrics = returnItemCollectionMetrics; return this; } transact(...writeOperations) { if (!writeOperations || writeOperations.length === 0) { throw new Error('at least one transaction operation must be added'); } if (this.params.TransactItems.length + writeOperations.length > 10) { throw new Error(`Each transaction can include up to 10 unique items, including conditions.\ Given operations count: ${this.params.TransactItems.length + writeOperations.length}`); } this.params.TransactItems.push(...writeOperations.map(wo => wo.transactItem)); return this; } /** * execute the request and return the full reponse. */ execFullResponse() { return this.dynamoDBWrapper.transactWriteItems(this.params); } /** * execute the request. */ exec() { return this.dynamoDBWrapper.transactWriteItems(this.params) .then(response => { return; }); } } //# sourceMappingURL=transact-write.request.js.map