@cubejs-backend/schema-compiler 0.31.15 → 0.31.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/src/adapter/PreAggregations.d.ts +1 -0
  2. package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
  3. package/dist/src/adapter/PreAggregations.js +1 -0
  4. package/dist/src/adapter/PreAggregations.js.map +1 -1
  5. package/dist/src/compiler/CubeValidator.d.ts.map +1 -1
  6. package/dist/src/compiler/CubeValidator.js +1 -0
  7. package/dist/src/compiler/CubeValidator.js.map +1 -1
  8. package/dist/src/scaffolding/ScaffoldingSchema.d.ts +2 -1
  9. package/dist/src/scaffolding/ScaffoldingSchema.d.ts.map +1 -1
  10. package/dist/src/scaffolding/ScaffoldingSchema.js +29 -2
  11. package/dist/src/scaffolding/ScaffoldingSchema.js.map +1 -1
  12. package/dist/src/scaffolding/ScaffoldingTemplate.d.ts +16 -52
  13. package/dist/src/scaffolding/ScaffoldingTemplate.d.ts.map +1 -1
  14. package/dist/src/scaffolding/ScaffoldingTemplate.js +14 -171
  15. package/dist/src/scaffolding/ScaffoldingTemplate.js.map +1 -1
  16. package/dist/src/scaffolding/descriptors/MemberReference.d.ts +5 -0
  17. package/dist/src/scaffolding/descriptors/MemberReference.d.ts.map +1 -0
  18. package/dist/src/scaffolding/descriptors/MemberReference.js +11 -0
  19. package/dist/src/scaffolding/descriptors/MemberReference.js.map +1 -0
  20. package/dist/src/scaffolding/{ValueWithComments.d.ts → descriptors/ValueWithComments.d.ts} +0 -0
  21. package/dist/src/scaffolding/descriptors/ValueWithComments.d.ts.map +1 -0
  22. package/dist/src/scaffolding/{ValueWithComments.js → descriptors/ValueWithComments.js} +0 -0
  23. package/dist/src/scaffolding/descriptors/ValueWithComments.js.map +1 -0
  24. package/dist/src/scaffolding/formatters/BaseSchemaFormatter.d.ts +52 -0
  25. package/dist/src/scaffolding/formatters/BaseSchemaFormatter.d.ts.map +1 -0
  26. package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js +124 -0
  27. package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js.map +1 -0
  28. package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.d.ts +9 -0
  29. package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.d.ts.map +1 -0
  30. package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.js +48 -0
  31. package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.js.map +1 -0
  32. package/dist/src/scaffolding/formatters/YamlSchemaFormatter.d.ts +10 -0
  33. package/dist/src/scaffolding/formatters/YamlSchemaFormatter.d.ts.map +1 -0
  34. package/dist/src/scaffolding/formatters/YamlSchemaFormatter.js +84 -0
  35. package/dist/src/scaffolding/formatters/YamlSchemaFormatter.js.map +1 -0
  36. package/dist/src/scaffolding/formatters/index.d.ts +4 -0
  37. package/dist/src/scaffolding/formatters/index.d.ts.map +1 -0
  38. package/dist/src/scaffolding/formatters/index.js +16 -0
  39. package/dist/src/scaffolding/formatters/index.js.map +1 -0
  40. package/dist/src/scaffolding/index.d.ts +1 -0
  41. package/dist/src/scaffolding/index.d.ts.map +1 -1
  42. package/dist/src/scaffolding/index.js +1 -0
  43. package/dist/src/scaffolding/index.js.map +1 -1
  44. package/package.json +3 -3
  45. package/dist/src/scaffolding/ValueWithComments.d.ts.map +0 -1
  46. package/dist/src/scaffolding/ValueWithComments.js.map +0 -1
@@ -1,182 +1,25 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ScaffoldingTemplate = void 0;
7
- const inflection_1 = __importDefault(require("inflection"));
8
- const ScaffoldingSchema_1 = require("./ScaffoldingSchema");
9
- const compiler_1 = require("../compiler");
10
- const ValueWithComments_1 = require("./ValueWithComments");
11
- class MemberReference {
12
- constructor(member) {
13
- this.member = member;
14
- this.member = member;
15
- }
16
- }
3
+ exports.ScaffoldingTemplate = exports.SchemaFormat = void 0;
4
+ const formatters_1 = require("./formatters");
5
+ var SchemaFormat;
6
+ (function (SchemaFormat) {
7
+ SchemaFormat["JavaScript"] = "js";
8
+ SchemaFormat["Yaml"] = "yaml";
9
+ })(SchemaFormat = exports.SchemaFormat || (exports.SchemaFormat = {}));
17
10
  class ScaffoldingTemplate {
18
- constructor(dbSchema, driver) {
19
- this.dbSchema = dbSchema;
11
+ constructor(dbSchema, driver, format) {
20
12
  this.driver = driver;
21
- this.scaffoldingSchema = new ScaffoldingSchema_1.ScaffoldingSchema(dbSchema);
22
- }
23
- escapeName(name) {
24
- if (this.eligibleIdentifier(name)) {
25
- return name;
26
- }
27
- return this.driver.quoteIdentifier(name);
28
- }
29
- eligibleIdentifier(name) {
30
- return !!name.match(/^[a-z0-9_]+$/);
13
+ this.formatStrategy =
14
+ format === SchemaFormat.Yaml
15
+ ? new formatters_1.YamlSchemaFormatter(dbSchema, this.driver)
16
+ : new formatters_1.JavaScriptSchemaFormatter(dbSchema, this.driver);
31
17
  }
32
18
  generateFilesByTableNames(tableNames, schemaContext = {}) {
33
- const schemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map(n => this.resolveTableName(n)));
34
- return schemaForTables.map(tableSchema => ({
35
- // eslint-disable-next-line prefer-template
36
- fileName: tableSchema.cube + '.js',
37
- content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext))
38
- }));
19
+ return this.formatStrategy.generateFilesByTableNames(tableNames, schemaContext);
39
20
  }
40
21
  generateFilesByCubeDescriptors(cubeDescriptors, schemaContext = {}) {
41
- const tableNames = cubeDescriptors.map(({ tableName }) => tableName);
42
- const generatedSchemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map(n => this.resolveTableName(n)));
43
- const schemaForTables = cubeDescriptors.map((descriptor) => {
44
- var _a;
45
- const generatedDescriptor = generatedSchemaForTables.find(({ cube }) => cube === descriptor.cube);
46
- const cubeMembers = descriptor.members.reduce((memo, member) => ({
47
- measures: [...memo.measures].concat(member.memberType === ScaffoldingSchema_1.MemberType.Measure ? [member] : []),
48
- dimensions: [...memo.dimensions].concat(member.memberType === ScaffoldingSchema_1.MemberType.Dimension ? [member] : []),
49
- }), {
50
- measures: [],
51
- dimensions: []
52
- });
53
- const dimensionNames = cubeMembers.dimensions.filter((d) => d.included || d.included == null).map((d) => d.name);
54
- return {
55
- ...generatedDescriptor,
56
- ...descriptor,
57
- ...cubeMembers,
58
- drillMembers: (_a = generatedDescriptor === null || generatedDescriptor === void 0 ? void 0 : generatedDescriptor.drillMembers) === null || _a === void 0 ? void 0 : _a.filter((dm) => dimensionNames.includes(dm.name))
59
- };
60
- });
61
- return schemaForTables.map(tableSchema => ({
62
- fileName: `${tableSchema.cube}.js`,
63
- content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext))
64
- }));
65
- }
66
- // eslint-disable-next-line consistent-return
67
- resolveTableName(tableName) {
68
- let tableParts;
69
- if (Array.isArray(tableName)) {
70
- tableParts = tableName;
71
- }
72
- else {
73
- tableParts = tableName.match(/(["`].*?["`]|[^`".]+)+(?=\s*|\s*$)/g);
74
- }
75
- if (tableParts.length === 2) {
76
- this.scaffoldingSchema.resolveTableDefinition(tableName);
77
- return tableName;
78
- }
79
- else if (tableParts.length === 1 && typeof tableName === 'string') {
80
- const schema = Object.keys(this.dbSchema).find(tableSchema => this.dbSchema[tableSchema][tableName] ||
81
- this.dbSchema[tableSchema][inflection_1.default.tableize(tableName)]);
82
- if (!schema) {
83
- throw new compiler_1.UserError(`Can't find any table with '${tableName}' name`);
84
- }
85
- if (this.dbSchema[schema][tableName]) {
86
- return `${schema}.${tableName}`;
87
- }
88
- if (this.dbSchema[schema][inflection_1.default.tableize(tableName)]) {
89
- return `${schema}.${inflection_1.default.tableize(tableName)}`;
90
- }
91
- }
92
- throw new compiler_1.UserError('Table names should be in <table> or <schema>.<table> format');
93
- }
94
- schemaDescriptorForTable(tableSchema, schemaContext = {}) {
95
- return {
96
- cube: tableSchema.cube,
97
- sql: `SELECT * FROM ${tableSchema.schema && tableSchema.schema.length ? `${this.escapeName(tableSchema.schema)}.` : ''}${this.escapeName(tableSchema.table)}`,
98
- preAggregations: new ValueWithComments_1.ValueWithComments({}, [
99
- 'Pre-Aggregations definitions go here',
100
- 'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started'
101
- ]),
102
- joins: tableSchema.joins.map(j => ({
103
- [j.cubeToJoin]: {
104
- sql: `\${CUBE}.${this.escapeName(j.thisTableColumn)} = \${${j.cubeToJoin}}.${this.escapeName(j.columnToJoin)}`,
105
- relationship: j.relationship
106
- }
107
- })).reduce((a, b) => ({ ...a, ...b }), {}),
108
- measures: tableSchema.measures.map(m => {
109
- var _a;
110
- return ({
111
- [this.memberName(m)]: {
112
- sql: this.sqlForMember(m),
113
- type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
114
- title: this.memberTitle(m)
115
- }
116
- });
117
- }).reduce((a, b) => ({ ...a, ...b }), {
118
- count: {
119
- type: 'count',
120
- drillMembers: (tableSchema.drillMembers || []).map(m => new MemberReference(this.memberName(m)))
121
- }
122
- }),
123
- dimensions: tableSchema.dimensions.map(m => {
124
- var _a;
125
- return ({
126
- [this.memberName(m)]: {
127
- sql: this.sqlForMember(m),
128
- type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
129
- title: this.memberTitle(m),
130
- primaryKey: m.isPrimaryKey ? true : undefined
131
- }
132
- });
133
- }).reduce((a, b) => ({ ...a, ...b }), {}),
134
- ...schemaContext
135
- };
136
- }
137
- sqlForMember(m) {
138
- // eslint-disable-next-line no-template-curly-in-string
139
- return `${this.escapeName(m.name) !== m.name || !this.eligibleIdentifier(m.name) ? '${CUBE}.' : ''}${this.escapeName(m.name)}`;
140
- }
141
- memberTitle(m) {
142
- return inflection_1.default.titleize(inflection_1.default.underscore(this.memberName(m))) !== m.title ? m.title : undefined;
143
- }
144
- memberName(member) {
145
- return inflection_1.default.camelize(member.title.replace(/[^A-Za-z0-9]+/g, '_').toLowerCase(), true);
146
- }
147
- renderFile(fileDescriptor) {
148
- const { cube, ...descriptor } = fileDescriptor;
149
- return `cube(\`${cube}\`, ${this.render(descriptor, 0)});\n`;
150
- }
151
- render(descriptor, level, appendComment = '') {
152
- // eslint-disable-next-line prefer-template
153
- const lineSeparator = ',\n' + (level < 2 ? '\n' : '');
154
- if (Array.isArray(descriptor)) {
155
- const items = descriptor.map(desc => this.render(desc, level + 1)).join(', ');
156
- return `[${items}]`;
157
- }
158
- else if (typeof descriptor === 'string') {
159
- return `\`${descriptor.replace(/`/g, '\\`')}\``;
160
- }
161
- else if (descriptor instanceof MemberReference) {
162
- return descriptor.member;
163
- }
164
- else if (descriptor instanceof ValueWithComments_1.ValueWithComments) {
165
- return this.render(descriptor.value, level, descriptor.comments.map((comment) => ` // ${comment}`).join('\n'));
166
- }
167
- else if (typeof descriptor === 'object') {
168
- const content = Object.keys(descriptor)
169
- .filter(k => descriptor[k] != null)
170
- .map(key => `${key}: ${this.render(descriptor[key], level + 1)}`)
171
- .join(lineSeparator)
172
- .split('\n')
173
- .map(l => ` ${l}`)
174
- .join('\n');
175
- return `{\n${appendComment}${content}\n}`;
176
- }
177
- else {
178
- return descriptor.toString();
179
- }
22
+ return this.formatStrategy.generateFilesByCubeDescriptors(cubeDescriptors, schemaContext);
180
23
  }
181
24
  }
182
25
  exports.ScaffoldingTemplate = ScaffoldingTemplate;
@@ -1 +1 @@
1
- {"version":3,"file":"ScaffoldingTemplate.js","sourceRoot":"","sources":["../../../src/scaffolding/ScaffoldingTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScaffoldingTemplate.js","sourceRoot":"","sources":["../../../src/scaffolding/ScaffoldingTemplate.ts"],"names":[],"mappings":";;;AAEA,6CAA8E;AA0B9E,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;AACf,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,MAAa,mBAAmB;IAG9B,YACE,QAAwB,EACP,MAAM,EACvB,MAAqB;QADJ,WAAM,GAAN,MAAM,CAAA;QAGvB,IAAI,CAAC,cAAc;YACjB,MAAM,KAAK,YAAY,CAAC,IAAI;gBAC1B,CAAC,CAAC,IAAI,gCAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;gBAChD,CAAC,CAAC,IAAI,sCAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAEM,yBAAyB,CAC9B,UAAuB,EACvB,gBAA+B,EAAE;QAEjC,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAClD,UAAU,EACV,aAAa,CACd,CAAC;IACJ,CAAC;IAEM,8BAA8B,CACnC,eAAiC,EACjC,gBAA+B,EAAE;QAEjC,OAAO,IAAI,CAAC,cAAc,CAAC,8BAA8B,CACvD,eAAe,EACf,aAAa,CACd,CAAC;IACJ,CAAC;CACF;AAjCD,kDAiCC"}
@@ -0,0 +1,5 @@
1
+ export declare class MemberReference {
2
+ member: any;
3
+ constructor(member: any);
4
+ }
5
+ //# sourceMappingURL=MemberReference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberReference.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/MemberReference.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IACA,MAAM;gBAAN,MAAM,KAAA;CAGjC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemberReference = void 0;
4
+ class MemberReference {
5
+ constructor(member) {
6
+ this.member = member;
7
+ this.member = member;
8
+ }
9
+ }
10
+ exports.MemberReference = MemberReference;
11
+ //# sourceMappingURL=MemberReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberReference.js","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/MemberReference.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAC1B,YAA0B,MAAM;QAAN,WAAM,GAAN,MAAM,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAJD,0CAIC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueWithComments.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/ValueWithComments.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;aAEV,KAAK,EAAE,GAAG;aACV,QAAQ,EAAE,MAAM,EAAE;gBADlB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,EAAE;CAGrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueWithComments.js","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/ValueWithComments.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;IAC5B,YACkB,KAAU,EACV,QAAkB;QADlB,UAAK,GAAL,KAAK,CAAK;QACV,aAAQ,GAAR,QAAQ,CAAU;IAEpC,CAAC;CACF;AAND,8CAMC"}
@@ -0,0 +1,52 @@
1
+ import { SchemaContext } from '../ScaffoldingTemplate';
2
+ import { CubeDescriptor, DatabaseSchema, ScaffoldingSchema, TableName, TableSchema } from '../ScaffoldingSchema';
3
+ import { MemberReference } from '../descriptors/MemberReference';
4
+ import { ValueWithComments } from '../descriptors/ValueWithComments';
5
+ export declare type SchemaFile = {
6
+ fileName: string;
7
+ content: string;
8
+ };
9
+ export declare abstract class BaseSchemaFormatter {
10
+ protected readonly dbSchema: DatabaseSchema;
11
+ protected readonly driver: any;
12
+ protected readonly scaffoldingSchema: ScaffoldingSchema;
13
+ constructor(dbSchema: DatabaseSchema, driver: any);
14
+ abstract fileExtension(): string;
15
+ protected abstract cubeReference(cube: string): string;
16
+ protected abstract renderFile(fileDescriptor: Record<string, unknown>): string;
17
+ generateFilesByTableNames(tableNames: TableName[], schemaContext?: SchemaContext): SchemaFile[];
18
+ generateFilesByCubeDescriptors(cubeDescriptors: CubeDescriptor[], schemaContext?: SchemaContext): SchemaFile[];
19
+ protected sqlForMember(m: any): string;
20
+ protected memberTitle(m: any): any;
21
+ protected memberName(member: any): string;
22
+ protected escapeName(name: any): any;
23
+ protected eligibleIdentifier(name: string): boolean;
24
+ schemaDescriptorForTable(tableSchema: TableSchema, schemaContext?: SchemaContext): {
25
+ dataSource?: string | undefined;
26
+ cube: string;
27
+ sql: string;
28
+ preAggregations: ValueWithComments;
29
+ joins: {
30
+ [x: string]: {
31
+ sql: string;
32
+ relationship: "hasOne" | "hasMany" | "belongsTo";
33
+ };
34
+ };
35
+ measures: {
36
+ count: {
37
+ type: string;
38
+ drillMembers: MemberReference[];
39
+ };
40
+ };
41
+ dimensions: {
42
+ [x: string]: {
43
+ sql: string;
44
+ type: any;
45
+ title: any;
46
+ primaryKey: boolean | undefined;
47
+ };
48
+ };
49
+ };
50
+ protected schemaForTablesByCubeDescriptors(cubeDescriptors: CubeDescriptor[]): TableSchema[];
51
+ }
52
+ //# sourceMappingURL=BaseSchemaFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/BaseSchemaFormatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAc,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAG,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,oBAAY,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,8BAAsB,mBAAmB;IAIrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG;IAJhC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBAGnC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,GAAG;aAKhB,aAAa,IAAI,MAAM;IAEvC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAEtD,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAEvE,yBAAyB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,GAAE,aAAkB,GAChC,UAAU,EAAE;IAaR,8BAA8B,CACnC,eAAe,EAAE,cAAc,EAAE,EACjC,aAAa,GAAE,aAAkB,GAChC,UAAU,EAAE;IASf,SAAS,CAAC,YAAY,CAAC,CAAC,KAAA;IASxB,SAAS,CAAC,WAAW,CAAC,CAAC,KAAA;IAOvB,SAAS,CAAC,UAAU,CAAC,MAAM,KAAA;IAO3B,SAAS,CAAC,UAAU,CAAC,IAAI,KAAA;IAOzB,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAIlC,wBAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,GAAE,aAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;IAsC3F,SAAS,CAAC,gCAAgC,CAAC,eAAe,EAAE,cAAc,EAAE;CAsC7E"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseSchemaFormatter = void 0;
7
+ const inflection_1 = __importDefault(require("inflection"));
8
+ const ScaffoldingSchema_1 = require("../ScaffoldingSchema");
9
+ const MemberReference_1 = require("../descriptors/MemberReference");
10
+ const ValueWithComments_1 = require("../descriptors/ValueWithComments");
11
+ class BaseSchemaFormatter {
12
+ constructor(dbSchema, driver) {
13
+ this.dbSchema = dbSchema;
14
+ this.driver = driver;
15
+ this.scaffoldingSchema = new ScaffoldingSchema_1.ScaffoldingSchema(dbSchema, driver);
16
+ }
17
+ generateFilesByTableNames(tableNames, schemaContext = {}) {
18
+ const schemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map((n) => this.scaffoldingSchema.resolveTableName(n)));
19
+ return schemaForTables.map((tableSchema) => ({
20
+ fileName: `${tableSchema.cube}.${this.fileExtension()}`,
21
+ content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext)),
22
+ }));
23
+ }
24
+ generateFilesByCubeDescriptors(cubeDescriptors, schemaContext = {}) {
25
+ return this.schemaForTablesByCubeDescriptors(cubeDescriptors).map((tableSchema) => ({
26
+ fileName: `${tableSchema.cube}.${this.fileExtension()}`,
27
+ content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext)),
28
+ }));
29
+ }
30
+ sqlForMember(m) {
31
+ return `${this.escapeName(m.name) !== m.name || !this.eligibleIdentifier(m.name)
32
+ ?
33
+ `${this.cubeReference('CUBE')}.`
34
+ : ''}${this.escapeName(m.name)}`;
35
+ }
36
+ memberTitle(m) {
37
+ return inflection_1.default.titleize(inflection_1.default.underscore(this.memberName(m))) !==
38
+ m.title
39
+ ? m.title
40
+ : undefined;
41
+ }
42
+ memberName(member) {
43
+ return inflection_1.default.camelize(member.title.replace(/[^A-Za-z0-9]+/g, '_').toLowerCase(), true);
44
+ }
45
+ escapeName(name) {
46
+ if (this.eligibleIdentifier(name)) {
47
+ return name;
48
+ }
49
+ return this.driver.quoteIdentifier(name);
50
+ }
51
+ eligibleIdentifier(name) {
52
+ return !!name.match(/^[a-z0-9_]+$/);
53
+ }
54
+ schemaDescriptorForTable(tableSchema, schemaContext = {}) {
55
+ var _a;
56
+ return {
57
+ cube: tableSchema.cube,
58
+ sql: `SELECT * FROM ${((_a = tableSchema.schema) === null || _a === void 0 ? void 0 : _a.length) ? `${this.escapeName(tableSchema.schema)}.` : ''}${this.escapeName(tableSchema.table)}`,
59
+ preAggregations: new ValueWithComments_1.ValueWithComments(null, [
60
+ 'Pre-Aggregations definitions go here',
61
+ 'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started'
62
+ ]),
63
+ joins: tableSchema.joins.map(j => ({
64
+ [j.cubeToJoin]: {
65
+ sql: `${this.cubeReference('CUBE')}.${this.escapeName(j.thisTableColumn)} = ${this.cubeReference(j.cubeToJoin)}.${this.escapeName(j.columnToJoin)}`,
66
+ relationship: j.relationship
67
+ }
68
+ })).reduce((a, b) => ({ ...a, ...b }), {}),
69
+ measures: tableSchema.measures.map(m => {
70
+ var _a;
71
+ return ({
72
+ [this.memberName(m)]: {
73
+ sql: this.sqlForMember(m),
74
+ type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
75
+ title: this.memberTitle(m)
76
+ }
77
+ });
78
+ }).reduce((a, b) => ({ ...a, ...b }), {
79
+ count: {
80
+ type: 'count',
81
+ drillMembers: (tableSchema.drillMembers || []).map(m => new MemberReference_1.MemberReference(this.memberName(m)))
82
+ }
83
+ }),
84
+ dimensions: tableSchema.dimensions.map(m => {
85
+ var _a;
86
+ return ({
87
+ [this.memberName(m)]: {
88
+ sql: this.sqlForMember(m),
89
+ type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
90
+ title: this.memberTitle(m),
91
+ primaryKey: m.isPrimaryKey ? true : undefined
92
+ }
93
+ });
94
+ }).reduce((a, b) => ({ ...a, ...b }), {}),
95
+ ...schemaContext
96
+ };
97
+ }
98
+ schemaForTablesByCubeDescriptors(cubeDescriptors) {
99
+ const tableNames = cubeDescriptors.map(({ tableName }) => tableName);
100
+ const generatedSchemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map((n) => this.scaffoldingSchema.resolveTableName(n)));
101
+ return cubeDescriptors.map((descriptor) => {
102
+ var _a;
103
+ const generatedDescriptor = generatedSchemaForTables.find(({ cube }) => cube === descriptor.cube);
104
+ const cubeMembers = descriptor.members.reduce((memo, member) => ({
105
+ measures: [...memo.measures].concat(member.memberType === ScaffoldingSchema_1.MemberType.Measure ? [member] : []),
106
+ dimensions: [...memo.dimensions].concat(member.memberType === ScaffoldingSchema_1.MemberType.Dimension ? [member] : []),
107
+ }), {
108
+ measures: [],
109
+ dimensions: [],
110
+ });
111
+ const dimensionNames = cubeMembers.dimensions
112
+ .filter((d) => d.included || d.included == null)
113
+ .map((d) => d.name);
114
+ return {
115
+ ...generatedDescriptor,
116
+ ...descriptor,
117
+ ...cubeMembers,
118
+ drillMembers: (_a = generatedDescriptor === null || generatedDescriptor === void 0 ? void 0 : generatedDescriptor.drillMembers) === null || _a === void 0 ? void 0 : _a.filter((dm) => dimensionNames.includes(dm.name)),
119
+ };
120
+ });
121
+ }
122
+ }
123
+ exports.BaseSchemaFormatter = BaseSchemaFormatter;
124
+ //# sourceMappingURL=BaseSchemaFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/BaseSchemaFormatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { SchemaDescriptor } from '../ScaffoldingTemplate';
2
+ import { BaseSchemaFormatter } from './BaseSchemaFormatter';
3
+ export declare class JavaScriptSchemaFormatter extends BaseSchemaFormatter {
4
+ fileExtension(): string;
5
+ protected cubeReference(cube: string): string;
6
+ protected renderFile(fileDescriptor: Record<string, unknown>): string;
7
+ protected render(descriptor: SchemaDescriptor, level: number, appendComment?: string): string;
8
+ }
9
+ //# sourceMappingURL=JavaScriptSchemaFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaScriptSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/JavaScriptSchemaFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,yBAA0B,SAAQ,mBAAmB;IACzD,aAAa;IAIpB,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAKrE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,MAAM;CA+B1F"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaScriptSchemaFormatter = void 0;
4
+ const MemberReference_1 = require("../descriptors/MemberReference");
5
+ const ValueWithComments_1 = require("../descriptors/ValueWithComments");
6
+ const BaseSchemaFormatter_1 = require("./BaseSchemaFormatter");
7
+ class JavaScriptSchemaFormatter extends BaseSchemaFormatter_1.BaseSchemaFormatter {
8
+ fileExtension() {
9
+ return 'js';
10
+ }
11
+ cubeReference(cube) {
12
+ return `\${${cube}}`;
13
+ }
14
+ renderFile(fileDescriptor) {
15
+ const { cube, ...descriptor } = fileDescriptor;
16
+ return `cube(\`${cube}\`, ${this.render(descriptor, 0)});\n`;
17
+ }
18
+ render(descriptor, level, appendComment = '') {
19
+ // eslint-disable-next-line prefer-template
20
+ const lineSeparator = ',\n' + (level < 2 ? '\n' : '');
21
+ if (Array.isArray(descriptor)) {
22
+ const items = descriptor.map(desc => this.render(desc, level + 1)).join(', ');
23
+ return `[${items}]`;
24
+ }
25
+ else if (typeof descriptor === 'string') {
26
+ return `\`${descriptor.replace(/`/g, '\\`')}\``;
27
+ }
28
+ else if (descriptor instanceof MemberReference_1.MemberReference) {
29
+ return descriptor.member;
30
+ }
31
+ else if (descriptor instanceof ValueWithComments_1.ValueWithComments) {
32
+ return this.render(descriptor.value, level, descriptor.comments.map((comment) => ` // ${comment}`).join('\n'));
33
+ }
34
+ else if (typeof descriptor === 'object') {
35
+ const content = descriptor != null ? Object.keys(descriptor)
36
+ .filter(k => descriptor[k] != null)
37
+ .map(key => `${key}: ${this.render(descriptor[key], level + 1)}`)
38
+ .join(lineSeparator)
39
+ .split('\n')
40
+ .map(l => ` ${l}`)
41
+ .join('\n') : '';
42
+ return `{\n${appendComment}${content}\n}`;
43
+ }
44
+ return descriptor.toString();
45
+ }
46
+ }
47
+ exports.JavaScriptSchemaFormatter = JavaScriptSchemaFormatter;
48
+ //# sourceMappingURL=JavaScriptSchemaFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaScriptSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/JavaScriptSchemaFormatter.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AACjE,wEAAqE;AAErE,+DAA4D;AAE5D,MAAa,yBAA0B,SAAQ,yCAAmB;IACzD,aAAa;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,aAAa,CAAC,IAAY;QAClC,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IAES,UAAU,CAAC,cAAuC;QAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC;QAC/C,OAAO,UAAU,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAES,MAAM,CAAC,UAA4B,EAAE,KAAa,EAAE,aAAa,GAAG,EAAE;QAC9E,2CAA2C;QAC3C,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,IAAI,KAAK,GAAG,CAAC;SACrB;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YACzC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;SACjD;aAAM,IAAI,UAAU,YAAY,iCAAe,EAAE;YAChD,OAAO,UAAU,CAAC,MAAM,CAAC;SAC1B;aAAM,IAAI,UAAU,YAAY,qCAAiB,EAAE;YAClD,OAAO,IAAI,CAAC,MAAM,CAChB,UAAU,CAAC,KAAK,EAChB,KAAK,EACL,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnE,CAAC;SACH;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YACzC,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;iBACzD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;iBAClC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;iBAChE,IAAI,CAAC,aAAa,CAAC;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnB,OAAO,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC;SAC3C;QAED,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF;AA7CD,8DA6CC"}
@@ -0,0 +1,10 @@
1
+ import { SchemaDescriptor } from '../ScaffoldingTemplate';
2
+ import { BaseSchemaFormatter } from './BaseSchemaFormatter';
3
+ export declare class YamlSchemaFormatter extends BaseSchemaFormatter {
4
+ fileExtension(): string;
5
+ protected cubeReference(cube: string): string;
6
+ protected renderFile(fileDescriptor: Record<string, unknown>): string;
7
+ protected render(value: SchemaDescriptor, level?: number, parent?: SchemaDescriptor): any;
8
+ private escapedValue;
9
+ }
10
+ //# sourceMappingURL=YamlSchemaFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YamlSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/YamlSchemaFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAS5D,qBAAa,mBAAoB,SAAQ,mBAAmB;IACnD,aAAa,IAAI,MAAM;IAI9B,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAgBrE,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,gBAAgB,EACvB,KAAK,SAAI,EACT,MAAM,CAAC,EAAE,gBAAgB;IAmE3B,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YamlSchemaFormatter = void 0;
4
+ const MemberReference_1 = require("../descriptors/MemberReference");
5
+ const ValueWithComments_1 = require("../descriptors/ValueWithComments");
6
+ const BaseSchemaFormatter_1 = require("./BaseSchemaFormatter");
7
+ function isPlainObject(value) {
8
+ if (typeof value !== 'object' || value === null) {
9
+ return false;
10
+ }
11
+ return Object.getPrototypeOf(value) === Object.getPrototypeOf({});
12
+ }
13
+ class YamlSchemaFormatter extends BaseSchemaFormatter_1.BaseSchemaFormatter {
14
+ fileExtension() {
15
+ return 'yaml';
16
+ }
17
+ cubeReference(cube) {
18
+ return `{${cube}}`;
19
+ }
20
+ renderFile(fileDescriptor) {
21
+ const { cube, sql, preAggregations: _, ...descriptor } = fileDescriptor;
22
+ return `cubes:\n - name: ${cube}${this.render({
23
+ sql: new ValueWithComments_1.ValueWithComments(sql, [
24
+ 'preAggregations:',
25
+ 'Pre-Aggregations definitions go here',
26
+ 'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started',
27
+ ]),
28
+ ...descriptor,
29
+ }, 2)}\n`;
30
+ }
31
+ render(value, level = 0, parent) {
32
+ const indent = Array(level * 2)
33
+ .fill(0)
34
+ .reduce((memo) => `${memo} `, '');
35
+ if (value instanceof MemberReference_1.MemberReference) {
36
+ return value.member;
37
+ }
38
+ else if (value instanceof ValueWithComments_1.ValueWithComments) {
39
+ const comments = `\n${value.comments
40
+ .map((comment) => `${indent}# ${comment}`)
41
+ .join('\n')}`;
42
+ return value.value ? `${this.render(value.value)}${comments}` : comments;
43
+ }
44
+ else if (Array.isArray(value)) {
45
+ if (value.every((v) => typeof v !== 'object' || v instanceof MemberReference_1.MemberReference)) {
46
+ return ` [${value.map(this.render).join(', ')}]`;
47
+ }
48
+ return `\n${value
49
+ .map((v) => `${indent}- ${this.render(v, level + 1, value)}`)
50
+ .join('\n')}`;
51
+ }
52
+ else if (typeof value === 'object') {
53
+ if (parent) {
54
+ return `${!Array.isArray(parent) ? '\n' : ''}${Object.entries(value)
55
+ .map(([k, v], index) => `${Array.isArray(parent) && index === 0 ? '' : `${indent}`}${k}:${this.render(v, level + 1, value)}`)
56
+ .join('\n')}`;
57
+ }
58
+ const content = Object.keys(value)
59
+ .map((key) => {
60
+ if (!isPlainObject(value[key])) {
61
+ return `${indent}${key}:${this.render(value[key], level + 1, value)}`;
62
+ }
63
+ return `${indent}${key}:${this.render(Object.entries(value[key] || {}).map(([ok, ov]) => ({
64
+ name: ok,
65
+ // @ts-ignore
66
+ ...Object.entries(ov)
67
+ .filter(([, v]) => v != null)
68
+ .reduce((memo, [k, v]) => ({ ...memo, [k]: v }), {}),
69
+ })), level + 1, value)}`;
70
+ })
71
+ .join('\n');
72
+ return `\n${content}`;
73
+ }
74
+ return `${Array.isArray(parent) ? '' : ' '}${this.escapedValue(value)}`;
75
+ }
76
+ escapedValue(value) {
77
+ if (typeof value !== 'string') {
78
+ return value;
79
+ }
80
+ return value.match(/[{}]/) ? `"${value.replace(/"/g, '\\"')}"` : value;
81
+ }
82
+ }
83
+ exports.YamlSchemaFormatter = YamlSchemaFormatter;
84
+ //# sourceMappingURL=YamlSchemaFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YamlSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/YamlSchemaFormatter.ts"],"names":[],"mappings":"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"}