database-builder
Version:
Library to assist in creating and maintaining SQL commands.
89 lines (88 loc) • 4.13 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CrudBaseBuilder = void 0;
var where_builder_1 = require("./where-builder");
var sql_base_builder_1 = require("./sql-base-builder");
var commander_builder_1 = require("./commander-builder");
var CrudBaseBuilder = /** @class */ (function (_super) {
__extends(CrudBaseBuilder, _super);
function CrudBaseBuilder(typeT, mapperTable, config, alias) {
if (alias === void 0) { alias = void 0; }
var _this = _super.call(this, typeT, typeT, mapperTable, alias) || this;
_this.config = config;
_this._columnsCompiled = {
columns: [],
params: [],
keyColumns: []
};
_this._commanderBuilder = new commander_builder_1.CommanderBuilder(config);
return _this;
}
CrudBaseBuilder.prototype.compile = function () {
var _this = this;
var compiledBase = this.buildBase();
if (Array.isArray(compiledBase))
return compiledBase.map(function (c) { return ({
query: "".concat(c.query).concat(_this.whereCompiled.where),
params: c.params.concat(_this.whereCompiled.params)
}); });
return {
params: compiledBase.params.concat(this.whereCompiled.params),
query: "".concat(compiledBase.query).concat(this.whereCompiled.where),
};
};
CrudBaseBuilder.prototype.getColumnsCompiled = function () {
if (!this._columnsCompiled.columns.length) {
this.setDefaultColumns();
}
return this._columnsCompiled;
};
CrudBaseBuilder.prototype.columnsBase = function (columnsCallback, instanceSetColumnsBuilder, instanceReturn) {
columnsCallback(instanceSetColumnsBuilder);
this.compileColumns(instanceSetColumnsBuilder.compile());
return instanceReturn;
};
CrudBaseBuilder.prototype.whereBase = function (whereCallback, instanceReturn, withAlias) {
if (withAlias === void 0) { withAlias = true; }
var instanceWhere = new where_builder_1.WhereBuilder(this._newable, withAlias ? this._alias : void 0);
whereCallback(instanceWhere);
this.compileWhere(this.whereCompiled, instanceWhere.compile());
return instanceReturn;
};
CrudBaseBuilder.prototype.compileColumns = function (compiled) {
if (compiled.columns.length) {
this._columnsCompiled.columns = this._columnsCompiled.columns.concat(compiled.columns);
this._columnsCompiled.params = this._columnsCompiled.params.concat(compiled.params);
}
};
Object.defineProperty(CrudBaseBuilder.prototype, "specifiedColumns", {
get: function () { return this.columnsBuilder.columns; },
enumerable: false,
configurable: true
});
Object.defineProperty(CrudBaseBuilder.prototype, "columnsBuilder", {
get: function () {
var _a;
return (_a = this._columnsBuilder) !== null && _a !== void 0 ? _a : (this._columnsBuilder = this.createColumnsBuilder());
},
enumerable: false,
configurable: true
});
return CrudBaseBuilder;
}(sql_base_builder_1.SqlBaseBuilder));
exports.CrudBaseBuilder = CrudBaseBuilder;