UNPKG

database-builder

Version:

Library to assist in creating and maintaining SQL commands.

114 lines (113 loc) 4.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExecutableBuilder = void 0; var replacement_param_1 = require("./replacement-param"); var rxjs_1 = require("rxjs"); var key_utils_1 = require("./key-utils"); var ExecutableBuilder = /** @class */ (function () { function ExecutableBuilder(enableLog) { if (enableLog === void 0) { enableLog = true; } this.enableLog = enableLog; } ExecutableBuilder.prototype.executeBatch = function (compiled, database) { var _this = this; return rxjs_1.Observable.create(function (observer) { database.sqlBatch(_this.buildSqlBatch(compiled)) .then(function (_result) { observer.next(true); observer.complete(); }) .catch(function (err) { return observer.error(err); }); }); }; ExecutableBuilder.prototype.execute = function (compiled, database) { var _this = this; return rxjs_1.Observable.create(function (observer) { _this.executorLinked(compiled, [], database) .subscribe(function (result) { observer.next(result); observer.complete(); }, function (err) { observer.error(err); observer.complete(); }); }); }; ExecutableBuilder.prototype.buildSqlBatch = function (compiled) { var _this = this; return compiled.map(function (x) { var r = x.params.length > 0 ? [x.query, x.params] : x.query; _this.log(r); return r; }); }; ExecutableBuilder.prototype.executeSql = function (database, compiled) { var _this = this; return rxjs_1.Observable.create(function (observer) { _this.log(compiled); database.executeSql(compiled.query, compiled.params) .then(function (result) { observer.next(result); observer.complete(); }) .catch(function (err) { observer.error(err); observer.complete(); }); }); }; ExecutableBuilder.prototype.checkParams = function (script, resultadosAnteriores) { var paramsResult = []; script.params.forEach(function (param) { if (param instanceof replacement_param_1.ReplacementParam) { var value_1 = resultadosAnteriores; param.properties.forEach(function (property) { value_1 = value_1[property]; }); paramsResult.push(value_1); } else { paramsResult.push(param); } }); script.params = paramsResult; return script; }; ExecutableBuilder.prototype.executorLinked = function (compiled, dataResultsApplied, database) { var _this = this; return rxjs_1.Observable.create(function (observer) { if (compiled && compiled.length > 0) { _this.executeSql(database, _this.checkParams(compiled[0], key_utils_1.KeyUtils.transformerDatabaseResultInArray(dataResultsApplied[0]))) .subscribe(function (result) { // remove o item executado compiled.shift(); _this.executorLinked(compiled, dataResultsApplied.concat([result]), database) .subscribe(function (res) { observer.next([result].concat(res)); observer.complete(); }, function (err) { observer.error(err); observer.complete(); }); }, function (err) { observer.error(err); observer.complete(); }); } else { observer.next([]); observer.complete(); } }); }; ExecutableBuilder.prototype.log = function (log) { if (this.enableLog) { // tslint:disable-next-line console.log(log); } }; return ExecutableBuilder; }()); exports.ExecutableBuilder = ExecutableBuilder;