database-builder
Version:
Library to assist in creating and maintaining SQL commands.
63 lines (62 loc) • 2.64 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SqlBaseBuilder = void 0;
var utils_1 = require("../core/utils");
var SqlBaseBuilder = /** @class */ (function () {
function SqlBaseBuilder(queryT, _newable, mapperTable, _alias) {
if (_alias === void 0) { _alias = void 0; }
this._newable = _newable;
this.mapperTable = mapperTable;
this._alias = _alias;
this.whereCompiled = { where: "", params: [] };
this.innerUsedAliasTest = [];
this.WHERE = " WHERE ";
this.NEXT_VALUE_ALIAS = 0;
if (utils_1.Utils.isQueryBuilder(queryT)) {
this.innerUsedAliasTest.push(queryT);
}
this._tablename = this.createTablename(_newable, mapperTable);
this._alias = this.createAlias(this._alias, this._tablename);
}
SqlBaseBuilder.prototype.createTablename = function (_currentTypeT, currentMapper) {
return currentMapper.tableName;
};
SqlBaseBuilder.prototype.createAlias = function (currentAlias, currentTablename) {
return currentAlias
? currentAlias
: this.createUniqueAlias(this.defaultAlias(currentTablename));
};
SqlBaseBuilder.prototype.getMapper = function () {
return this.mapperTable;
};
SqlBaseBuilder.prototype.hasAlias = function (alias) {
if (this._alias === alias) {
return true;
}
return !!this.innerUsedAliasTest.find(function (x) { return x.hasAlias(alias); });
};
SqlBaseBuilder.prototype.compileWhere = function (current, compiled, addCommand) {
if (addCommand === void 0) { addCommand = true; }
if (compiled.where.length) {
current.where +=
"".concat((current.where.length ? " AND " : (addCommand ? this.WHERE : ""))).concat(compiled.where);
current.params =
current.params.concat(compiled.params);
}
};
SqlBaseBuilder.prototype.defaultAlias = function (tableName) {
if (tableName.length > 3) {
return tableName.substring(0, 3);
}
return tableName;
};
SqlBaseBuilder.prototype.createUniqueAlias = function (aliasProposed) {
aliasProposed = aliasProposed ? aliasProposed.toLowerCase() : aliasProposed;
if (this.hasAlias(aliasProposed)) {
return this.createUniqueAlias("".concat(aliasProposed).concat(this.NEXT_VALUE_ALIAS++));
}
return aliasProposed;
};
return SqlBaseBuilder;
}());
exports.SqlBaseBuilder = SqlBaseBuilder;