import * as tslib_1 from "tslib";
import { map } from 'rxjs/operators';
import { DynamoRx } from '../dynamo-rx';
var TransactWriteRequest = /** @class */ (function () {
    function TransactWriteRequest() {
        this.dynamoRx = new DynamoRx();
        this.params = {
            TransactItems: [],
        };
    }
    TransactWriteRequest.prototype.returnConsumedCapacity = function (level) {
        this.params.ReturnConsumedCapacity = level;
        return this;
    };
    TransactWriteRequest.prototype.returnItemCollectionMetrics = function (returnItemCollectionMetrics) {
        this.params.ReturnItemCollectionMetrics = returnItemCollectionMetrics;
        return this;
    };
    TransactWriteRequest.prototype.transact = function () {
        var writeOperations = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            writeOperations[_i] = arguments[_i];
        }
        var _a;
        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));
        }
        (_a = this.params.TransactItems).push.apply(_a, tslib_1.__spread(writeOperations.map(function (wo) { return wo.transactItem; })));
        return this;
    };
    TransactWriteRequest.prototype.execFullResponse = function () {
        return this.dynamoRx.transactWriteItems(this.params);
    };
    TransactWriteRequest.prototype.exec = function () {
        return this.dynamoRx.transactWriteItems(this.params).pipe(map(function (response) {
            return;
        }));
    };
    return TransactWriteRequest;
}());
export { TransactWriteRequest };
//# sourceMappingURL=transact-write.request.js.map