UNPKG

database-builder

Version:

Library to assist in creating and maintaining SQL commands.

61 lines (60 loc) 2.99 kB
"use strict"; 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;