@devrev/meerkat-core 0.0.110 → 0.0.112
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.
- package/package.json +1 -1
- package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js +25 -4
- package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js.map +1 -1
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/member-formatters/get-alias.d.ts +15 -0
- package/src/member-formatters/get-alias.js +19 -1
- package/src/member-formatters/get-alias.js.map +1 -1
- package/src/member-formatters/index.d.ts +1 -1
- package/src/member-formatters/index.js +2 -1
- package/src/member-formatters/index.js.map +1 -1
- package/src/resolution/generators/generate-resolution-join-paths.js +1 -1
- package/src/resolution/generators/generate-resolution-join-paths.js.map +1 -1
- package/src/resolution/generators/generate-resolution-schemas.js +1 -5
- package/src/resolution/generators/generate-resolution-schemas.js.map +1 -1
- package/src/resolution/steps/aggregation-step.d.ts +1 -1
- package/src/resolution/steps/aggregation-step.js +2 -1
- package/src/resolution/steps/aggregation-step.js.map +1 -1
- package/src/resolution/steps/apply-aliases-step.d.ts +34 -0
- package/src/resolution/steps/apply-aliases-step.js +96 -0
- package/src/resolution/steps/apply-aliases-step.js.map +1 -0
- package/src/resolution/steps/apply-sql-overrides.d.ts +39 -0
- package/src/resolution/steps/apply-sql-overrides.js +83 -0
- package/src/resolution/steps/apply-sql-overrides.js.map +1 -0
- package/src/resolution/types.d.ts +6 -0
- package/src/resolution/types.js.map +1 -1
package/package.json
CHANGED
|
@@ -3,8 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.applySQLExpressions = exports.getSQLExpressionAST = void 0;
|
|
4
4
|
const constants_1 = require("../../member-formatters/constants");
|
|
5
5
|
const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
6
|
+
/**
|
|
7
|
+
* Encode a string to base64 (works in both browser and Node.js)
|
|
8
|
+
*/
|
|
9
|
+
const toBase64 = (str) => {
|
|
10
|
+
const bytes = new TextEncoder().encode(str);
|
|
11
|
+
let binary = '';
|
|
12
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
13
|
+
binary += String.fromCharCode(bytes[i]);
|
|
14
|
+
}
|
|
15
|
+
return btoa(binary);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Decode a base64 string (works in both browser and Node.js)
|
|
19
|
+
*/
|
|
20
|
+
const fromBase64 = (base64) => {
|
|
21
|
+
const binary = atob(base64);
|
|
22
|
+
const bytes = new Uint8Array(binary.length);
|
|
23
|
+
for (let i = 0; i < binary.length; i++) {
|
|
24
|
+
bytes[i] = binary.charCodeAt(i);
|
|
25
|
+
}
|
|
26
|
+
return new TextDecoder().decode(bytes);
|
|
27
|
+
};
|
|
6
28
|
const getSQLPlaceholder = (sqlExpression) => {
|
|
7
|
-
return `__MEERKAT_SQL_EXPR__${
|
|
29
|
+
return `__MEERKAT_SQL_EXPR__${toBase64(sqlExpression)}__`;
|
|
8
30
|
};
|
|
9
31
|
const createInOperatorAST = (member, sqlExpression) => {
|
|
10
32
|
const sqlPlaceholder = getSQLPlaceholder(sqlExpression);
|
|
@@ -71,10 +93,9 @@ exports.getSQLExpressionAST = getSQLExpressionAST;
|
|
|
71
93
|
*/
|
|
72
94
|
const applySQLExpressions = (sql) => {
|
|
73
95
|
// Replace quoted placeholders (DuckDB uses single quotes for VARCHAR constants)
|
|
74
|
-
return sql.replace(/'__MEERKAT_SQL_EXPR__([A-Za-z0-9+/=]+)__'/g, (
|
|
96
|
+
return sql.replace(/'__MEERKAT_SQL_EXPR__([A-Za-z0-9+/=]+)__'/g, (_, encoded) => {
|
|
75
97
|
// Decode the base64 SQL expression
|
|
76
|
-
|
|
77
|
-
return sqlExpression;
|
|
98
|
+
return fromBase64(encoded);
|
|
78
99
|
});
|
|
79
100
|
};
|
|
80
101
|
exports.applySQLExpressions = applySQLExpressions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-expression-parser.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/sql-expression/sql-expression-parser.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAE1E,gGAGyE;AAGzE,MAAM,
|
|
1
|
+
{"version":3,"file":"sql-expression-parser.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/sql-expression/sql-expression-parser.ts"],"names":[],"mappings":"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"}
|
package/src/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export * from './member-formatters';
|
|
|
16
16
|
export * from './resolution/generators';
|
|
17
17
|
export * from './resolution/resolution';
|
|
18
18
|
export * from './resolution/steps/aggregation-step';
|
|
19
|
+
export * from './resolution/steps/apply-aliases-step';
|
|
20
|
+
export * from './resolution/steps/apply-sql-overrides';
|
|
19
21
|
export * from './resolution/steps/resolution-step';
|
|
20
22
|
export * from './resolution/steps/unnest-step';
|
|
21
23
|
export * from './resolution/types';
|
package/src/index.js
CHANGED
|
@@ -28,6 +28,8 @@ tslib_1.__exportStar(require("./member-formatters"), exports);
|
|
|
28
28
|
tslib_1.__exportStar(require("./resolution/generators"), exports);
|
|
29
29
|
tslib_1.__exportStar(require("./resolution/resolution"), exports);
|
|
30
30
|
tslib_1.__exportStar(require("./resolution/steps/aggregation-step"), exports);
|
|
31
|
+
tslib_1.__exportStar(require("./resolution/steps/apply-aliases-step"), exports);
|
|
32
|
+
tslib_1.__exportStar(require("./resolution/steps/apply-sql-overrides"), exports);
|
|
31
33
|
tslib_1.__exportStar(require("./resolution/steps/resolution-step"), exports);
|
|
32
34
|
tslib_1.__exportStar(require("./resolution/steps/unnest-step"), exports);
|
|
33
35
|
tslib_1.__exportStar(require("./resolution/types"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,8DAAoC;AACpC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,wGAGwE;AAFtE,4HAAA,mBAAmB,OAAA;AACnB,4HAAA,mBAAmB,OAAA;AAErB,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,oFAA0D;AAC1D,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,kEAAwC;AACxC,8EAAoD;AACpD,6EAAmD;AACnD,yEAA+C;AAC/C,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,8DAAoC;AACpC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,wGAGwE;AAFtE,4HAAA,mBAAmB,OAAA;AACnB,4HAAA,mBAAmB,OAAA;AAErB,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,oFAA0D;AAC1D,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,kEAAwC;AACxC,8EAAoD;AACpD,gFAAsD;AACtD,iFAAuD;AACvD,6EAAmD;AACnD,yEAA+C;AAC/C,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
|
|
@@ -13,3 +13,18 @@ export declare const constructAlias: ({ name, alias, aliasContext, }: {
|
|
|
13
13
|
alias?: string | undefined;
|
|
14
14
|
aliasContext: AliasContext;
|
|
15
15
|
}) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a compound alias by joining two alias strings with " - ".
|
|
18
|
+
* Used when a field resolves to multiple columns (e.g., "Owners - Display Name").
|
|
19
|
+
*
|
|
20
|
+
* @param baseAlias - The base field alias (e.g., "Owners")
|
|
21
|
+
* @param resolutionAlias - The resolved field alias (e.g., "Display Name")
|
|
22
|
+
* @returns The compound alias (e.g., "Owners - Display Name")
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* createCompoundAlias("Owners", "Display Name") // "Owners - Display Name"
|
|
27
|
+
* createCompoundAlias("Tags", "Tag Name") // "Tags - Tag Name"
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const constructCompoundAlias: (baseAlias: string, resolutionAlias: string) => string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.constructAlias = exports.getAliasFromSchema = void 0;
|
|
3
|
+
exports.constructCompoundAlias = exports.constructAlias = exports.getAliasFromSchema = void 0;
|
|
4
4
|
const find_in_table_schema_1 = require("../utils/find-in-table-schema");
|
|
5
5
|
const member_key_to_safe_key_1 = require("./member-key-to-safe-key");
|
|
6
6
|
const split_into_data_source_and_fields_1 = require("./split-into-data-source-and-fields");
|
|
@@ -39,4 +39,22 @@ const constructAlias = ({ name, alias, aliasContext, }) => {
|
|
|
39
39
|
return (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name);
|
|
40
40
|
};
|
|
41
41
|
exports.constructAlias = constructAlias;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a compound alias by joining two alias strings with " - ".
|
|
44
|
+
* Used when a field resolves to multiple columns (e.g., "Owners - Display Name").
|
|
45
|
+
*
|
|
46
|
+
* @param baseAlias - The base field alias (e.g., "Owners")
|
|
47
|
+
* @param resolutionAlias - The resolved field alias (e.g., "Display Name")
|
|
48
|
+
* @returns The compound alias (e.g., "Owners - Display Name")
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* createCompoundAlias("Owners", "Display Name") // "Owners - Display Name"
|
|
53
|
+
* createCompoundAlias("Tags", "Tag Name") // "Tags - Tag Name"
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
const constructCompoundAlias = (baseAlias, resolutionAlias) => {
|
|
57
|
+
return `${baseAlias} - ${resolutionAlias}`;
|
|
58
|
+
};
|
|
59
|
+
exports.constructCompoundAlias = constructCompoundAlias;
|
|
42
60
|
//# sourceMappingURL=get-alias.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-alias.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/get-alias.ts"],"names":[],"mappings":";;;AACA,wEAA6D;AAC7D,qEAA8D;AAC9D,2FAAmF;AAOnF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,eAAe,EACf,kBAAkB,GACL,EAAW,EAAE;IAC1B,IAAI,eAAe,EAAE;QACnB,yFAAyF;QACzF,kCAAkC;QAClC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,kBAAkB,EAAE;QACtB,0DAA0D;QAC1D,OAAO,KAAK,CAAC;KACd;IACD,mEAAmE;IACnE,mFAAmF;IACnF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,WAAW,EACX,YAAY,GAKb,EAAU,EAAE;;IACX,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAA,gEAA4B,EAAC,IAAI,CAAC,CAAC;IACrD,OAAO,IAAA,sBAAc,EAAC;QACpB,IAAI;QACJ,KAAK,EAAE,MAAA,IAAA,mCAAY,EAAC,KAAK,EAAE,WAAW,CAAC,0CAAE,KAAK;QAC9C,YAAY;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,kBAAkB,sBAe7B;AAEK,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,YAAY,GAKb,EAAU,EAAE;IACX,IAAI,KAAK,EAAE;QACT,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACpC,gFAAgF;YAChF,OAAO,IAAI,KAAK,GAAG,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAA,2CAAkB,EAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
|
|
1
|
+
{"version":3,"file":"get-alias.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/get-alias.ts"],"names":[],"mappings":";;;AACA,wEAA6D;AAC7D,qEAA8D;AAC9D,2FAAmF;AAOnF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,eAAe,EACf,kBAAkB,GACL,EAAW,EAAE;IAC1B,IAAI,eAAe,EAAE;QACnB,yFAAyF;QACzF,kCAAkC;QAClC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,kBAAkB,EAAE;QACtB,0DAA0D;QAC1D,OAAO,KAAK,CAAC;KACd;IACD,mEAAmE;IACnE,mFAAmF;IACnF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,WAAW,EACX,YAAY,GAKb,EAAU,EAAE;;IACX,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAA,gEAA4B,EAAC,IAAI,CAAC,CAAC;IACrD,OAAO,IAAA,sBAAc,EAAC;QACpB,IAAI;QACJ,KAAK,EAAE,MAAA,IAAA,mCAAY,EAAC,KAAK,EAAE,WAAW,CAAC,0CAAE,KAAK;QAC9C,YAAY;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,kBAAkB,sBAe7B;AAEK,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,YAAY,GAKb,EAAU,EAAE;IACX,IAAI,KAAK,EAAE;QACT,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACpC,gFAAgF;YAChF,OAAO,IAAI,KAAK,GAAG,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAA,2CAAkB,EAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEF;;;;;;;;;;;;;GAaG;AACI,MAAM,sBAAsB,GAAG,CACpC,SAAiB,EACjB,eAAuB,EACf,EAAE;IACV,OAAO,GAAG,SAAS,MAAM,eAAe,EAAE,CAAC;AAC7C,CAAC,CAAC;AALW,QAAA,sBAAsB,0BAKjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { COLUMN_NAME_DELIMITER, MEERKAT_OUTPUT_DELIMITER } from './constants';
|
|
2
|
-
export { constructAlias, getAliasFromSchema } from './get-alias';
|
|
2
|
+
export { constructAlias, constructCompoundAlias, getAliasFromSchema, } from './get-alias';
|
|
3
3
|
export { getNamespacedKey } from './get-namespaced-key';
|
|
4
4
|
export { memberKeyToSafeKey } from './member-key-to-safe-key';
|
|
5
5
|
export { splitIntoDataSourceAndFields } from './split-into-data-source-and-fields';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.splitIntoDataSourceAndFields = exports.memberKeyToSafeKey = exports.getNamespacedKey = exports.getAliasFromSchema = exports.constructAlias = exports.MEERKAT_OUTPUT_DELIMITER = exports.COLUMN_NAME_DELIMITER = void 0;
|
|
3
|
+
exports.splitIntoDataSourceAndFields = exports.memberKeyToSafeKey = exports.getNamespacedKey = exports.getAliasFromSchema = exports.constructCompoundAlias = exports.constructAlias = exports.MEERKAT_OUTPUT_DELIMITER = exports.COLUMN_NAME_DELIMITER = void 0;
|
|
4
4
|
var constants_1 = require("./constants");
|
|
5
5
|
Object.defineProperty(exports, "COLUMN_NAME_DELIMITER", { enumerable: true, get: function () { return constants_1.COLUMN_NAME_DELIMITER; } });
|
|
6
6
|
Object.defineProperty(exports, "MEERKAT_OUTPUT_DELIMITER", { enumerable: true, get: function () { return constants_1.MEERKAT_OUTPUT_DELIMITER; } });
|
|
7
7
|
var get_alias_1 = require("./get-alias");
|
|
8
8
|
Object.defineProperty(exports, "constructAlias", { enumerable: true, get: function () { return get_alias_1.constructAlias; } });
|
|
9
|
+
Object.defineProperty(exports, "constructCompoundAlias", { enumerable: true, get: function () { return get_alias_1.constructCompoundAlias; } });
|
|
9
10
|
Object.defineProperty(exports, "getAliasFromSchema", { enumerable: true, get: function () { return get_alias_1.getAliasFromSchema; } });
|
|
10
11
|
var get_namespaced_key_1 = require("./get-namespaced-key");
|
|
11
12
|
Object.defineProperty(exports, "getNamespacedKey", { enumerable: true, get: function () { return get_namespaced_key_1.getNamespacedKey; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8E;AAArE,kHAAA,qBAAqB,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AACxD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8E;AAArE,kHAAA,qBAAqB,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AACxD,yCAIqB;AAHnB,2GAAA,cAAc,OAAA;AACd,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAEpB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,yFAAmF;AAA1E,iJAAA,4BAA4B,OAAA"}
|
|
@@ -13,7 +13,7 @@ const generateResolutionJoinPaths = (baseDataSourceName, resolutionConfig, baseT
|
|
|
13
13
|
on: (0, member_formatters_1.constructAlias)({
|
|
14
14
|
name: config.name,
|
|
15
15
|
alias: (_a = (0, find_in_table_schema_1.findInSchemas)(config.name, baseTableSchemas)) === null || _a === void 0 ? void 0 : _a.alias,
|
|
16
|
-
aliasContext: {
|
|
16
|
+
aliasContext: { isTableSchemaAlias: true },
|
|
17
17
|
}),
|
|
18
18
|
},
|
|
19
19
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-resolution-join-paths.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-join-paths.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAG7E,2EAAiE;AAG1D,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAC1B,gBAAkC,EAClC,gBAA+B,EACnB,EAAE;IACd,OAAO,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QAAC,OAAA;YACpD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,IAAA,sCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,EAAE,EAAE,IAAA,kCAAc,EAAC;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;oBAC1D,YAAY,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-resolution-join-paths.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-join-paths.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAG7E,2EAAiE;AAG1D,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAC1B,gBAAkC,EAClC,gBAA+B,EACnB,EAAE;IACd,OAAO,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QAAC,OAAA;YACpD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,IAAA,sCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,EAAE,EAAE,IAAA,kCAAc,EAAC;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;oBAC1D,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;iBAC3C,CAAC;aACH;SACF,CAAA;KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,2BAA2B,+BAgBtC"}
|
|
@@ -35,11 +35,7 @@ const generateResolutionSchemas = (config, baseTableSchemas) => {
|
|
|
35
35
|
name: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)),
|
|
36
36
|
sql: `${baseName}.${col}`,
|
|
37
37
|
type: dimension.type,
|
|
38
|
-
alias:
|
|
39
|
-
name: col,
|
|
40
|
-
alias: dimension.alias,
|
|
41
|
-
aliasContext: { isTableSchemaAlias: true },
|
|
42
|
-
})}`,
|
|
38
|
+
alias: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)),
|
|
43
39
|
};
|
|
44
40
|
}),
|
|
45
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-resolution-schemas.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-schemas.ts"],"names":[],"mappings":";;;AAAA,+DAIiC;AAEjC,2EAG0C;AAGnC,MAAM,yBAAyB,GAAG,CACvC,MAAwB,EACxB,gBAA+B,EAC/B,EAAE;IACF,MAAM,iBAAiB,GAAkB,EAAE,CAAC;IAC5C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CACrC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;SACnE;QAED,MAAM,QAAQ,GAAG,IAAA,sCAAkB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAA,kCAAc,EAAC;YAC/B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;YAC7D,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAC;QAEH,yFAAyF;QACzF,2EAA2E;QAC3E,sBAAsB;QACtB,MAAM,gBAAgB,GAAgB;YACpC,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClD,MAAM,SAAS,GAAG,IAAA,6CAAsB,EACtC,IAAA,oCAAgB,EAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EACvC,MAAM,CAAC,YAAY,CACpB,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;iBAChD;gBACD,OAAO;oBACL,wDAAwD;oBACxD,yEAAyE;oBACzE,IAAI,EAAE,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC/D,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;oBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-resolution-schemas.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-schemas.ts"],"names":[],"mappings":";;;AAAA,+DAIiC;AAEjC,2EAG0C;AAGnC,MAAM,yBAAyB,GAAG,CACvC,MAAwB,EACxB,gBAA+B,EAC/B,EAAE;IACF,MAAM,iBAAiB,GAAkB,EAAE,CAAC;IAC5C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CACrC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;SACnE;QAED,MAAM,QAAQ,GAAG,IAAA,sCAAkB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAA,kCAAc,EAAC;YAC/B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;YAC7D,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAC;QAEH,yFAAyF;QACzF,2EAA2E;QAC3E,sBAAsB;QACtB,MAAM,gBAAgB,GAAgB;YACpC,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClD,MAAM,SAAS,GAAG,IAAA,6CAAsB,EACtC,IAAA,oCAAgB,EAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EACvC,MAAM,CAAC,YAAY,CACpB,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;iBAChD;gBACD,OAAO;oBACL,wDAAwD;oBACxD,yEAAyE;oBACzE,IAAI,EAAE,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC/D,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;oBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBACjE,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;QAEF,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAlDW,QAAA,yBAAyB,6BAkDpC"}
|
|
@@ -75,8 +75,9 @@ const getAggregatedSql = ({ resolvedTableSchema, resolutionConfig, contextParams
|
|
|
75
75
|
tableSchemas: [schemaWithAggregation],
|
|
76
76
|
contextParams,
|
|
77
77
|
});
|
|
78
|
+
const tableSchema = (0, index_1.createWrapperTableSchema)(aggregatedSql, schemaWithAggregation);
|
|
78
79
|
// Order by row_id to maintain consistent ordering before excluding it
|
|
79
|
-
return
|
|
80
|
+
return tableSchema;
|
|
80
81
|
});
|
|
81
82
|
exports.getAggregatedSql = getAggregatedSql;
|
|
82
83
|
//# sourceMappingURL=aggregation-step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregation-step.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/steps/aggregation-step.ts"],"names":[],"mappings":";;;;AAAA,uCAWqB;AAErB;;;;;;GAMG;AACH,MAAM,4BAA4B,GAAG,CAAC,UAAkB,EAAU,EAAE;IAClE,OAAO,GAAG,UAAU,GAAG,gCAAwB,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACI,MAAM,gBAAgB,GAAG,CAAO,EACrC,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,GAUf,
|
|
1
|
+
{"version":3,"file":"aggregation-step.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/steps/aggregation-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Query } from '../../types/cube-types/query';
|
|
2
|
+
import { ContextParams, TableSchema } from '../../types/cube-types/table';
|
|
3
|
+
import { ResolutionConfig } from '../types';
|
|
4
|
+
export interface ApplyAliasesParams {
|
|
5
|
+
aggregatedTableSchema: TableSchema;
|
|
6
|
+
originalTableSchemas: TableSchema[];
|
|
7
|
+
resolutionConfig: ResolutionConfig;
|
|
8
|
+
contextParams?: ContextParams;
|
|
9
|
+
cubeQueryToSQL: (params: {
|
|
10
|
+
query: Query;
|
|
11
|
+
tableSchemas: TableSchema[];
|
|
12
|
+
contextParams?: ContextParams;
|
|
13
|
+
}) => Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Restores aliases from the original table schemas to the aggregated schema
|
|
17
|
+
* and generates the final SQL with proper column names.
|
|
18
|
+
*
|
|
19
|
+
* This step:
|
|
20
|
+
* 1. Creates an alias map from the original table schemas
|
|
21
|
+
* 2. Handles resolution column configs to determine proper aliases
|
|
22
|
+
* - For single resolution columns: uses the original alias
|
|
23
|
+
* - For multiple resolution columns: creates compound aliases (e.g., "Owners - Display Name")
|
|
24
|
+
* 3. Creates a new schema with restored aliases
|
|
25
|
+
* 4. Generates final SQL with proper aliases
|
|
26
|
+
*
|
|
27
|
+
* @param aggregatedTableSchema - The aggregated table schema from the aggregation step
|
|
28
|
+
* @param originalTableSchemas - The original table schemas with aliases
|
|
29
|
+
* @param resolutionConfig - Resolution configuration
|
|
30
|
+
* @param contextParams - Optional context parameters
|
|
31
|
+
* @param cubeQueryToSQL - Function to generate SQL from query and table schemas
|
|
32
|
+
* @returns Final SQL string with aliases
|
|
33
|
+
*/
|
|
34
|
+
export declare const applyAliases: ({ aggregatedTableSchema, originalTableSchemas, resolutionConfig, contextParams, cubeQueryToSQL, }: ApplyAliasesParams) => Promise<string>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyAliases = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const member_formatters_1 = require("../../member-formatters");
|
|
6
|
+
const get_alias_1 = require("../../member-formatters/get-alias");
|
|
7
|
+
const get_namespaced_key_1 = require("../../member-formatters/get-namespaced-key");
|
|
8
|
+
/**
|
|
9
|
+
* Restores aliases from the original table schemas to the aggregated schema
|
|
10
|
+
* and generates the final SQL with proper column names.
|
|
11
|
+
*
|
|
12
|
+
* This step:
|
|
13
|
+
* 1. Creates an alias map from the original table schemas
|
|
14
|
+
* 2. Handles resolution column configs to determine proper aliases
|
|
15
|
+
* - For single resolution columns: uses the original alias
|
|
16
|
+
* - For multiple resolution columns: creates compound aliases (e.g., "Owners - Display Name")
|
|
17
|
+
* 3. Creates a new schema with restored aliases
|
|
18
|
+
* 4. Generates final SQL with proper aliases
|
|
19
|
+
*
|
|
20
|
+
* @param aggregatedTableSchema - The aggregated table schema from the aggregation step
|
|
21
|
+
* @param originalTableSchemas - The original table schemas with aliases
|
|
22
|
+
* @param resolutionConfig - Resolution configuration
|
|
23
|
+
* @param contextParams - Optional context parameters
|
|
24
|
+
* @param cubeQueryToSQL - Function to generate SQL from query and table schemas
|
|
25
|
+
* @returns Final SQL string with aliases
|
|
26
|
+
*/
|
|
27
|
+
const applyAliases = ({ aggregatedTableSchema, originalTableSchemas, resolutionConfig, contextParams, cubeQueryToSQL, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
+
var _a;
|
|
29
|
+
// Restore aliases from original tableSchemas to get nice column names in final output
|
|
30
|
+
// Create a map of schemaName__fieldName -> alias from original schemas
|
|
31
|
+
const aliasMap = new Map();
|
|
32
|
+
const columnConfigMap = new Map(((_a = resolutionConfig.columnConfigs) === null || _a === void 0 ? void 0 : _a.map((config) => [config.name, config])) || []);
|
|
33
|
+
const tableSchemaMap = new Map(resolutionConfig.tableSchemas.map((schema) => [schema.name, schema]));
|
|
34
|
+
// Helper function to process dimensions or measures and populate the alias map
|
|
35
|
+
const processMembers = (members, schemaName) => {
|
|
36
|
+
members.forEach((member) => {
|
|
37
|
+
var _a;
|
|
38
|
+
if (!member.alias)
|
|
39
|
+
return;
|
|
40
|
+
const columnName = (0, member_formatters_1.memberKeyToSafeKey)(`${schemaName}.${member.name}`);
|
|
41
|
+
const columnConfig = columnConfigMap.get(columnName);
|
|
42
|
+
// No resolution config - use original alias
|
|
43
|
+
if (!columnConfig) {
|
|
44
|
+
aliasMap.set(columnName, member.alias);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const joinedTableName = columnName;
|
|
48
|
+
// Single resolution column - use original alias
|
|
49
|
+
if (columnConfig.resolutionColumns.length === 1) {
|
|
50
|
+
aliasMap.set((0, member_formatters_1.memberKeyToSafeKey)((0, get_namespaced_key_1.getNamespacedKey)(joinedTableName, columnConfig.resolutionColumns[0])), member.alias);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Multiple resolution columns - create compound aliases
|
|
54
|
+
const sourceTableSchema = tableSchemaMap.get(columnConfig.source);
|
|
55
|
+
if (!sourceTableSchema) {
|
|
56
|
+
throw new Error(`Source table schema not found for ${columnConfig.source}`);
|
|
57
|
+
}
|
|
58
|
+
for (const resolutionColumn of columnConfig.resolutionColumns) {
|
|
59
|
+
const sourceFieldAlias = (_a = sourceTableSchema.dimensions.find((dimension) => dimension.name === resolutionColumn)) === null || _a === void 0 ? void 0 : _a.alias;
|
|
60
|
+
if (!sourceFieldAlias) {
|
|
61
|
+
throw new Error(`Source field alias not found for ${resolutionColumn}`);
|
|
62
|
+
}
|
|
63
|
+
aliasMap.set((0, member_formatters_1.memberKeyToSafeKey)((0, get_namespaced_key_1.getNamespacedKey)(joinedTableName, resolutionColumn)), (0, get_alias_1.constructCompoundAlias)(member.alias, sourceFieldAlias));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
originalTableSchemas.forEach((schema) => {
|
|
68
|
+
processMembers(schema.dimensions, schema.name);
|
|
69
|
+
processMembers(schema.measures, schema.name);
|
|
70
|
+
});
|
|
71
|
+
// Create a new schema with restored aliases
|
|
72
|
+
const schemaWithAliases = Object.assign(Object.assign({}, aggregatedTableSchema), { dimensions: [
|
|
73
|
+
...aggregatedTableSchema.dimensions.map((dim) => {
|
|
74
|
+
var _a;
|
|
75
|
+
return (Object.assign(Object.assign({}, dim), { alias: aliasMap.get((_a = dim.alias) !== null && _a !== void 0 ? _a : '') || dim.alias }));
|
|
76
|
+
}),
|
|
77
|
+
...aggregatedTableSchema.measures.map((measure) => {
|
|
78
|
+
var _a;
|
|
79
|
+
return (Object.assign(Object.assign({}, measure), { alias: aliasMap.get((_a = measure.alias) !== null && _a !== void 0 ? _a : '') || measure.alias }));
|
|
80
|
+
}),
|
|
81
|
+
], measures: [] });
|
|
82
|
+
// Generate final SQL with aliases
|
|
83
|
+
const sqlWithAliases = yield cubeQueryToSQL({
|
|
84
|
+
query: {
|
|
85
|
+
dimensions: [
|
|
86
|
+
...schemaWithAliases.dimensions.map((d) => (0, get_namespaced_key_1.getNamespacedKey)(schemaWithAliases.name, d.name)),
|
|
87
|
+
],
|
|
88
|
+
measures: [],
|
|
89
|
+
},
|
|
90
|
+
tableSchemas: [schemaWithAliases],
|
|
91
|
+
contextParams,
|
|
92
|
+
});
|
|
93
|
+
return sqlWithAliases;
|
|
94
|
+
});
|
|
95
|
+
exports.applyAliases = applyAliases;
|
|
96
|
+
//# sourceMappingURL=apply-aliases-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-aliases-step.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/steps/apply-aliases-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TableSchema } from '../../types/cube-types/table';
|
|
2
|
+
import { ResolutionConfig } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Applies SQL override configurations to a table schema.
|
|
5
|
+
* This function overrides dimensions/measures with custom SQL expressions.
|
|
6
|
+
*
|
|
7
|
+
* This is done AFTER the base SQL is generated, so filters and sorts
|
|
8
|
+
* that rely on original values are already compiled into the SQL.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: The fieldName in sqlOverrideConfigs should be in natural format (e.g., 'issues.priority').
|
|
11
|
+
* This function will apply memberKeyToSafeKey internally.
|
|
12
|
+
*
|
|
13
|
+
* The overrideSql should reference fields in datasource.fieldname format (same as fieldName),
|
|
14
|
+
* which will be automatically converted to the safe format (datasource__fieldname).
|
|
15
|
+
*
|
|
16
|
+
* @param baseSchema - The base table schema to apply overrides to
|
|
17
|
+
* @param resolutionConfig - Resolution config containing SQL overrides
|
|
18
|
+
* @returns A new TableSchema with SQL overrides applied
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // For scalar fields:
|
|
23
|
+
* {
|
|
24
|
+
* fieldName: 'issues.priority',
|
|
25
|
+
* overrideSql: `CASE WHEN issues.priority = 1 THEN 'P0' WHEN issues.priority = 2 THEN 'P1' END`,
|
|
26
|
+
* type: 'string'
|
|
27
|
+
* }
|
|
28
|
+
* // issues.priority gets automatically replaced with issues__priority
|
|
29
|
+
*
|
|
30
|
+
* // For array fields:
|
|
31
|
+
* {
|
|
32
|
+
* fieldName: 'issues.priority_tags',
|
|
33
|
+
* overrideSql: `list_transform(issues.priority_tags, x -> CASE WHEN x = 1 THEN 'P0' ... END)`,
|
|
34
|
+
* type: 'string_array'
|
|
35
|
+
* }
|
|
36
|
+
* // issues.priority_tags gets automatically replaced with issues__priority_tags
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare const applySqlOverrides: (baseSchema: TableSchema, resolutionConfig: ResolutionConfig) => TableSchema;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applySqlOverrides = void 0;
|
|
4
|
+
const member_formatters_1 = require("../../member-formatters");
|
|
5
|
+
/**
|
|
6
|
+
* Applies SQL override configurations to a table schema.
|
|
7
|
+
* This function overrides dimensions/measures with custom SQL expressions.
|
|
8
|
+
*
|
|
9
|
+
* This is done AFTER the base SQL is generated, so filters and sorts
|
|
10
|
+
* that rely on original values are already compiled into the SQL.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: The fieldName in sqlOverrideConfigs should be in natural format (e.g., 'issues.priority').
|
|
13
|
+
* This function will apply memberKeyToSafeKey internally.
|
|
14
|
+
*
|
|
15
|
+
* The overrideSql should reference fields in datasource.fieldname format (same as fieldName),
|
|
16
|
+
* which will be automatically converted to the safe format (datasource__fieldname).
|
|
17
|
+
*
|
|
18
|
+
* @param baseSchema - The base table schema to apply overrides to
|
|
19
|
+
* @param resolutionConfig - Resolution config containing SQL overrides
|
|
20
|
+
* @returns A new TableSchema with SQL overrides applied
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // For scalar fields:
|
|
25
|
+
* {
|
|
26
|
+
* fieldName: 'issues.priority',
|
|
27
|
+
* overrideSql: `CASE WHEN issues.priority = 1 THEN 'P0' WHEN issues.priority = 2 THEN 'P1' END`,
|
|
28
|
+
* type: 'string'
|
|
29
|
+
* }
|
|
30
|
+
* // issues.priority gets automatically replaced with issues__priority
|
|
31
|
+
*
|
|
32
|
+
* // For array fields:
|
|
33
|
+
* {
|
|
34
|
+
* fieldName: 'issues.priority_tags',
|
|
35
|
+
* overrideSql: `list_transform(issues.priority_tags, x -> CASE WHEN x = 1 THEN 'P0' ... END)`,
|
|
36
|
+
* type: 'string_array'
|
|
37
|
+
* }
|
|
38
|
+
* // issues.priority_tags gets automatically replaced with issues__priority_tags
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
const applySqlOverrides = (baseSchema, resolutionConfig) => {
|
|
42
|
+
if (!resolutionConfig.sqlOverrideConfigs ||
|
|
43
|
+
resolutionConfig.sqlOverrideConfigs.length === 0) {
|
|
44
|
+
return baseSchema;
|
|
45
|
+
}
|
|
46
|
+
// Validate that all SQL overrides reference the field being overridden
|
|
47
|
+
resolutionConfig.sqlOverrideConfigs.forEach((overrideConfig) => {
|
|
48
|
+
// fieldName is expected to be in natural format (e.g., 'issues.priority')
|
|
49
|
+
if (!overrideConfig.overrideSql.includes(overrideConfig.fieldName)) {
|
|
50
|
+
throw new Error(`SQL override for field '${overrideConfig.fieldName}' must reference the field in the SQL. ` +
|
|
51
|
+
`Current SQL: ${overrideConfig.overrideSql}`);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Create a new schema with cloned dimensions and measures
|
|
55
|
+
const updatedSchema = Object.assign(Object.assign({}, baseSchema), { dimensions: [...baseSchema.dimensions], measures: [...baseSchema.measures] });
|
|
56
|
+
resolutionConfig.sqlOverrideConfigs.forEach((overrideConfig) => {
|
|
57
|
+
// Convert natural field name to safe key for matching
|
|
58
|
+
// e.g., 'issues.priority' -> 'issues__priority'
|
|
59
|
+
const safeFieldName = (0, member_formatters_1.memberKeyToSafeKey)(overrideConfig.fieldName);
|
|
60
|
+
// Check dimensions in base schema
|
|
61
|
+
const dimensionIndex = updatedSchema.dimensions.findIndex((dim) => dim.name === safeFieldName);
|
|
62
|
+
if (dimensionIndex !== -1) {
|
|
63
|
+
const originalDimension = updatedSchema.dimensions[dimensionIndex];
|
|
64
|
+
// Replace datasource.fieldName with datasource__fieldName in the SQL
|
|
65
|
+
// e.g., "issues.priority" -> "issues__priority"
|
|
66
|
+
const fieldNamePattern = overrideConfig.fieldName.replace(/\./g, '\\.'); // Escape dots for regex
|
|
67
|
+
const finalSql = overrideConfig.overrideSql.replace(new RegExp(`\\b${fieldNamePattern}\\b`, 'g'), // Word boundary to match exact field names
|
|
68
|
+
safeFieldName);
|
|
69
|
+
updatedSchema.dimensions[dimensionIndex] = Object.assign(Object.assign({}, originalDimension), { sql: finalSql, type: overrideConfig.type });
|
|
70
|
+
}
|
|
71
|
+
// Check measures in base schema
|
|
72
|
+
const measureIndex = updatedSchema.measures.findIndex((measure) => measure.name === safeFieldName);
|
|
73
|
+
if (measureIndex !== -1) {
|
|
74
|
+
const originalMeasure = updatedSchema.measures[measureIndex];
|
|
75
|
+
const fieldNamePattern = overrideConfig.fieldName.replace(/\./g, '\\.');
|
|
76
|
+
const finalSql = overrideConfig.overrideSql.replace(new RegExp(`\\b${fieldNamePattern}\\b`, 'g'), safeFieldName);
|
|
77
|
+
updatedSchema.measures[measureIndex] = Object.assign(Object.assign({}, originalMeasure), { sql: finalSql, type: overrideConfig.type });
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return updatedSchema;
|
|
81
|
+
};
|
|
82
|
+
exports.applySqlOverrides = applySqlOverrides;
|
|
83
|
+
//# sourceMappingURL=apply-sql-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-sql-overrides.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/steps/apply-sql-overrides.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACI,MAAM,iBAAiB,GAAG,CAC/B,UAAuB,EACvB,gBAAkC,EACrB,EAAE;IACf,IACE,CAAC,gBAAgB,CAAC,kBAAkB;QACpC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAChD;QACA,OAAO,UAAU,CAAC;KACnB;IAED,uEAAuE;IACvE,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QAC7D,0EAA0E;QAC1E,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YAClE,MAAM,IAAI,KAAK,CACb,2BAA2B,cAAc,CAAC,SAAS,yCAAyC;gBAC1F,gBAAgB,cAAc,CAAC,WAAW,EAAE,CAC/C,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,aAAa,mCACd,UAAU,KACb,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,EACtC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GACnC,CAAC;IAEF,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QAC7D,sDAAsD;QACtD,gDAAgD;QAChD,MAAM,aAAa,GAAG,IAAA,sCAAkB,EAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEnE,kCAAkC;QAClC,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CACpC,CAAC;QAEF,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;YACzB,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAEnE,qEAAqE;YACrE,gDAAgD;YAChD,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,wBAAwB;YAEjG,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CACjD,IAAI,MAAM,CAAC,MAAM,gBAAgB,KAAK,EAAE,GAAG,CAAC,EAAE,2CAA2C;YACzF,aAAa,CACd,CAAC;YAEF,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,mCACnC,iBAAiB,KACpB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,CAAC,IAAI,GAC1B,CAAC;SACH;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CACnD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAC5C,CAAC;QAEF,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAE7D,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAExE,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CACjD,IAAI,MAAM,CAAC,MAAM,gBAAgB,KAAK,EAAE,GAAG,CAAC,EAC5C,aAAa,CACd,CAAC;YAEF,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,mCAC/B,eAAe,KAClB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,cAAc,CAAC,IAAI,GAC1B,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAlFW,QAAA,iBAAiB,qBAkF5B"}
|
|
@@ -6,8 +6,14 @@ export interface ResolutionColumnConfig {
|
|
|
6
6
|
joinColumn: string;
|
|
7
7
|
resolutionColumns: string[];
|
|
8
8
|
}
|
|
9
|
+
export interface SqlOverrideConfig {
|
|
10
|
+
fieldName: string;
|
|
11
|
+
overrideSql: string;
|
|
12
|
+
type: DimensionType | MeasureType;
|
|
13
|
+
}
|
|
9
14
|
export interface ResolutionConfig {
|
|
10
15
|
columnConfigs: ResolutionColumnConfig[];
|
|
11
16
|
tableSchemas: TableSchema[];
|
|
17
|
+
sqlOverrideConfigs?: SqlOverrideConfig[];
|
|
12
18
|
}
|
|
13
19
|
export declare const BASE_DATA_SOURCE_NAME = "__base_query";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../meerkat-core/src/resolution/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../meerkat-core/src/resolution/types.ts"],"names":[],"mappings":";;;AAwCa,QAAA,qBAAqB,GAAG,cAAc,CAAC"}
|