@eggjs/dal-decorator
Version:
tegg dal decorator
102 lines • 10.7 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TableModel = void 0;
const node_assert_1 = __importDefault(require("node:assert"));
const pluralize_1 = __importDefault(require("pluralize"));
const lodash_snakecase_1 = __importDefault(require("lodash.snakecase"));
const tegg_types_1 = require("@eggjs/tegg-types");
const ColumnModel_1 = require("./ColumnModel");
const IndexModel_1 = require("./IndexModel");
const TableInfoUtil_1 = require("../util/TableInfoUtil");
const ColumnInfoUtil_1 = require("../util/ColumnInfoUtil");
const IndexInfoUtil_1 = require("../util/IndexInfoUtil");
class TableModel {
constructor(params) {
this.clazz = params.clazz;
this.name = params.name;
this.dataSourceName = params.dataSourceName;
this.columns = params.columns;
this.indices = params.indices;
this.comment = params.comment;
this.autoExtendSize = params.autoExtendSize;
this.autoIncrement = params.autoIncrement;
this.avgRowLength = params.avgRowLength;
this.characterSet = params.characterSet;
this.collate = params.collate;
this.compression = params.compression;
this.encryption = params.encryption;
this.engine = params.engine;
this.engineAttribute = params.engineAttribute;
this.insertMethod = params.insertMethod;
this.keyBlockSize = params.keyBlockSize;
this.maxRows = params.maxRows;
this.minRows = params.minRows;
this.rowFormat = params.rowFormat;
this.secondaryEngineAttribute = params.secondaryEngineAttribute;
}
getPrimary() {
const index = this.indices.find(t => t.type === tegg_types_1.IndexType.PRIMARY);
if (index) {
return index;
}
const primaryColumn = this.columns.filter(t => t.primaryKey === true);
return new IndexModel_1.IndexModel({
name: 'PRIMARY',
type: tegg_types_1.IndexType.PRIMARY,
keys: primaryColumn.map(t => {
return {
columnName: t.columnName,
propertyName: t.propertyName,
};
}),
});
}
static build(clazz) {
var _a, _b;
const params = TableInfoUtil_1.TableInfoUtil.getTableParams(clazz);
const name = (_a = params === null || params === void 0 ? void 0 : params.name) !== null && _a !== void 0 ? _a : (0, lodash_snakecase_1.default)((0, pluralize_1.default)(clazz.name));
const columnInfoMap = ColumnInfoUtil_1.ColumnInfoUtil.getColumnInfoMap(clazz);
const columnTypeMap = ColumnInfoUtil_1.ColumnInfoUtil.getColumnTypeMap(clazz);
const dataSourceName = (_b = params === null || params === void 0 ? void 0 : params.dataSourceName) !== null && _b !== void 0 ? _b : 'default';
(0, node_assert_1.default)(TableInfoUtil_1.TableInfoUtil.getIsTable(clazz), `${name} is not Table`);
(0, node_assert_1.default)(columnTypeMap, `${name} has no columns`);
const columns = [];
const indices = [];
for (const [property, columnType] of columnTypeMap === null || columnTypeMap === void 0 ? void 0 : columnTypeMap.entries()) {
const columnParam = columnInfoMap === null || columnInfoMap === void 0 ? void 0 : columnInfoMap.get(property);
columns.push(ColumnModel_1.ColumnModel.build(property, columnType, columnParam));
}
const indexList = IndexInfoUtil_1.IndexInfoUtil.getIndexList(clazz);
for (const index of indexList) {
indices.push(IndexModel_1.IndexModel.build(index, columns, clazz));
}
return new TableModel({
clazz,
name,
columns,
indices,
dataSourceName,
comment: params === null || params === void 0 ? void 0 : params.comment,
autoExtendSize: params === null || params === void 0 ? void 0 : params.autoExtendSize,
autoIncrement: params === null || params === void 0 ? void 0 : params.autoIncrement,
avgRowLength: params === null || params === void 0 ? void 0 : params.avgRowLength,
characterSet: params === null || params === void 0 ? void 0 : params.characterSet,
collate: params === null || params === void 0 ? void 0 : params.collate,
compression: params === null || params === void 0 ? void 0 : params.compression,
encryption: params === null || params === void 0 ? void 0 : params.encryption,
engine: params === null || params === void 0 ? void 0 : params.engine,
engineAttribute: params === null || params === void 0 ? void 0 : params.engineAttribute,
insertMethod: params === null || params === void 0 ? void 0 : params.insertMethod,
keyBlockSize: params === null || params === void 0 ? void 0 : params.keyBlockSize,
maxRows: params === null || params === void 0 ? void 0 : params.maxRows,
minRows: params === null || params === void 0 ? void 0 : params.minRows,
rowFormat: params === null || params === void 0 ? void 0 : params.rowFormat,
secondaryEngineAttribute: params === null || params === void 0 ? void 0 : params.secondaryEngineAttribute,
});
}
}
exports.TableModel = TableModel;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC9UYWJsZU1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFpQztBQUNqQywwREFBa0M7QUFDbEMsd0VBQXlDO0FBQ3pDLGtEQUE4QztBQUU5QywrQ0FBNEM7QUFDNUMsNkNBQTBDO0FBQzFDLHlEQUFzRDtBQUN0RCwyREFBd0Q7QUFDeEQseURBQXNEO0FBRXRELE1BQWEsVUFBVTtJQXVCckIsWUFBWSxNQXNCWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFH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