UNPKG

1.78 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const change_case = require("change-case");
4const handlebars = require("handlebars");
5const template = `/**
6 * Auto generated, do not modify!
7 */
8/* eslint-disable */
9export namespace COLUMNS {
10 {{#each tables}}{{{this}}}{{/each}}
11}
12`;
13const tableTemplate = `
14 export enum {{tableName}} {
15 {{{columns}}}
16 }
17`;
18class TableColumnsBuilder {
19 constructor(schema) {
20 this.schema = schema;
21 this.compiledTemplate = handlebars.compile(template);
22 this.compiledTableTemplate = handlebars.compile(tableTemplate);
23 }
24 renderTemplate() {
25 const tables = [];
26 tables.push(...this.renderTableTemplates(this.schema.tables));
27 tables.push(...this.renderTableTemplates(this.schema.views));
28 return this.compiledTemplate({ tables: tables });
29 }
30 renderColumns(table) {
31 const arr = [];
32 for (const key in table) {
33 const field = table[key].field;
34 const constCase = change_case.constantCase(field);
35 arr.push(`${constCase} = '${field}'`);
36 }
37 return arr;
38 }
39 renderTableTamplate(tableName, table) {
40 const columnsArr = this.renderColumns(table);
41 const columns = columnsArr.join(", \n\t\t");
42 tableName = change_case.constantCase(tableName);
43 return this.compiledTableTemplate({ tableName: tableName, columns: columns });
44 }
45 renderTableTemplates(tables) {
46 const templates = [];
47 for (const key in tables) {
48 templates.push(this.renderTableTamplate(key, tables[key]));
49 }
50 return templates;
51 }
52}
53exports.TableColumnsBuilder = TableColumnsBuilder;
54//# sourceMappingURL=table-columns-builder.js.map
\No newline at end of file