database-builder
Version:
Library to assist in creating and maintaining SQL commands.
35 lines (34 loc) • 1.51 kB
JavaScript
;
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;