UNPKG

database-builder

Version:

Library to assist in creating and maintaining SQL commands.

35 lines (34 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SingleTransactionManager = void 0; var rxjs_1 = require("rxjs"); var operators_1 = require("rxjs/operators"); /** * Manages transaction commits to execute sequentially * Because some providers have limitations in executing simultaneous transactions, such as: SQLite * Initial idea: https://stackblitz.com/edit/rxjs-single-transaction-manager */ var SingleTransactionManager = /** @class */ (function () { function SingleTransactionManager() { this.subject = new rxjs_1.Subject(); this.subject .pipe( // mergeMap(obs => (0, operators_1.concatMap)(function (obs) { return obs.pipe( // Não permitir propagação de erro interno, pois se o ocorrer um erro não tratado no subject ele irá parar de funcionar, // causando erro em todas as tentativas de execuções futuras (0, operators_1.catchError)(function (err) { return (0, rxjs_1.of)(err); })); })) .subscribe(function (_resultIgnored) { }); } SingleTransactionManager.prototype.commitOnStack = function (commit) { var _this = this; return new rxjs_1.Observable(function (observer) { _this.subject.next(commit.pipe((0, operators_1.tap)(observer))); }); }; return SingleTransactionManager; }()); exports.SingleTransactionManager = SingleTransactionManager;