1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const change_case = require("change-case");
|
4 | const handlebars = require("handlebars");
|
5 | const template = `/**
|
6 | * Auto generated, do not modify!
|
7 | */
|
8 | /* tslint:disable */
|
9 | export namespace COLUMNS {
|
10 | {{#each tables}}{{{this}}}{{/each}}
|
11 | }
|
12 | `;
|
13 | const tableTemplate = `
|
14 | export enum {{tableName}} {
|
15 | {{{columns}}}
|
16 | }
|
17 | `;
|
18 | class 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 | }
|
53 | exports.TableColumnsBuilder = TableColumnsBuilder;
|
54 |
|
\ | No newline at end of file |