typescript-mysql-model
Version:
{ "version": "1.2.46", "name": "typescript-mysql-model", "description": "", "main": "index.js", "types": "index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url":
54 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const change_case = require("change-case");
const handlebars = require("handlebars");
const template = `/**
* Auto generated, do not modify!
*/
/* tslint:disable */
export namespace COLUMNS {
{{#each tables}}{{{this}}}{{/each}}
}
`;
const tableTemplate = `
export enum {{tableName}} {
{{{columns}}}
}
`;
class TableColumnsBuilder {
constructor(schema) {
this.schema = schema;
this.compiledTemplate = handlebars.compile(template);
this.compiledTableTemplate = handlebars.compile(tableTemplate);
}
renderTemplate() {
const tables = [];
tables.push(...this.renderTableTemplates(this.schema.tables));
tables.push(...this.renderTableTemplates(this.schema.views));
return this.compiledTemplate({ tables: tables });
}
renderColumns(table) {
const arr = [];
for (const key in table) {
const field = table[key].field;
const constCase = change_case.constantCase(field);
arr.push(`${constCase} = '${field}'`);
}
return arr;
}
renderTableTamplate(tableName, table) {
const columnsArr = this.renderColumns(table);
const columns = columnsArr.join(", \n\t\t");
tableName = change_case.constantCase(tableName);
return this.compiledTableTemplate({ tableName: tableName, columns: columns });
}
renderTableTemplates(tables) {
const templates = [];
for (const key in tables) {
templates.push(this.renderTableTamplate(key, tables[key]));
}
return templates;
}
}
exports.TableColumnsBuilder = TableColumnsBuilder;
//# sourceMappingURL=table-columns-builder.js.map