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