database-builder
Version:
Library to assist in creating and maintaining SQL commands.
61 lines (60 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MapperTable = void 0;
var mapper_column_1 = require("./mapper-column");
var utils_1 = require("./core/utils");
var field_type_1 = require("./core/enums/field-type");
var errors_1 = require("./core/errors");
var expression_or_column_enum_1 = require("./core/enums/expression-or-column-enum");
var MapperTable = /** @class */ (function () {
function MapperTable(tableName) {
if (tableName === void 0) { tableName = void 0; }
this.tableName = tableName;
this.columns = [];
this.dependencies = [];
this.queryFilter = void 0;
}
MapperTable.prototype.addColumn = function (name, fieldType, primaryKeyType, fieldReference, tableReference) {
this.add(new mapper_column_1.MapperColumn(name, fieldType, fieldReference, primaryKeyType, tableReference));
};
MapperTable.prototype.removeColumn = function (columnName) {
if (this.hasColumn(columnName)) {
var index = this.columns.findIndex(function (x) { return x.column === columnName; });
if (index > -1) {
this.columns.splice(index, 1);
}
}
};
MapperTable.prototype.getColumnNameByField = function (expression) {
return this.getColumnByField(expression).column;
};
MapperTable.prototype.getColumnByField = function (expression) {
var expressionField = utils_1.Utils.expressionOrColumn(expression) === expression_or_column_enum_1.ExpressionOrColumnEnum.Expression
? utils_1.Utils.getFieldExpression(expression)
: expression;
return this.findColumn(function (x) { return x.fieldReference === expressionField; });
};
MapperTable.prototype.keyColumns = function () {
return this.columns.filter(function (x) { return !!x.primaryKeyType; });
};
MapperTable.prototype.getColumn = function (columnName) {
return this.findColumn(function (x) { return x.column === columnName; });
};
MapperTable.prototype.findColumn = function (predicate) {
return this.columns.find(predicate);
};
MapperTable.prototype.hasColumn = function (columnName) {
return !utils_1.Utils.isNull(this.getColumn(columnName));
};
MapperTable.prototype.add = function (mapperColumn) {
if (utils_1.Utils.isFlag(mapperColumn.fieldType, field_type_1.FieldType.NULL)) {
throw new errors_1.DatabaseBuilderError("Mapper: ".concat(this.tableName, ", can not get instance of mapped column ('").concat(mapperColumn.column, "')"));
}
if (this.hasColumn(mapperColumn.column)) {
throw new errors_1.DatabaseBuilderError("Mapper: ".concat(this.tableName, ", duplicate column: '").concat(mapperColumn.column, "'"));
}
this.columns.push(mapperColumn);
};
return MapperTable;
}());
exports.MapperTable = MapperTable;