@devrev/meerkat-core 0.0.118 → 0.0.119
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/ast-builder/ast-builder.d.ts +0 -2
- package/src/ast-builder/ast-builder.js +6 -9
- package/src/ast-builder/ast-builder.js.map +1 -1
- package/src/cube-group-by-transformer/cube-group-by-transformer.d.ts +1 -2
- package/src/cube-group-by-transformer/cube-group-by-transformer.js +2 -2
- package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -1
- package/src/cube-measure-transformer/cube-measure-transformer.d.ts +2 -4
- package/src/cube-measure-transformer/cube-measure-transformer.js +9 -10
- package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -1
- package/src/cube-order-by-transformer/cube-order-by-transformer.d.ts +1 -2
- package/src/cube-order-by-transformer/cube-order-by-transformer.js +2 -2
- package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -1
- package/src/filter-params/filter-params-ast.d.ts +1 -2
- package/src/filter-params/filter-params-ast.js +2 -5
- package/src/filter-params/filter-params-ast.js.map +1 -1
- package/src/get-filter-params-sql/get-filter-params-sql.d.ts +1 -3
- package/src/get-filter-params-sql/get-filter-params-sql.js +2 -2
- package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -1
- package/src/get-final-base-sql/get-final-base-sql.d.ts +1 -3
- package/src/get-final-base-sql/get-final-base-sql.js +1 -3
- package/src/get-final-base-sql/get-final-base-sql.js.map +1 -1
- package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.d.ts +3 -7
- package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js +6 -11
- package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -1
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.d.ts +1 -2
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +3 -5
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -1
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.d.ts +1 -3
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +2 -3
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -1
- package/src/member-formatters/get-alias.d.ts +8 -34
- package/src/member-formatters/get-alias.js +13 -47
- package/src/member-formatters/get-alias.js.map +1 -1
- package/src/member-formatters/index.d.ts +2 -2
- package/src/member-formatters/index.js.map +1 -1
- package/src/member-formatters/member-key-to-safe-key.d.ts +3 -12
- package/src/member-formatters/member-key-to-safe-key.js +3 -10
- package/src/member-formatters/member-key-to-safe-key.js.map +1 -1
- package/src/resolution/generators/generate-resolution-join-paths.js +2 -5
- package/src/resolution/generators/generate-resolution-join-paths.js.map +1 -1
- package/src/resolution/generators/generate-resolution-schemas.js +3 -4
- package/src/resolution/generators/generate-resolution-schemas.js.map +1 -1
- package/src/resolution/generators/generate-resolved-dimensions.js +2 -3
- package/src/resolution/generators/generate-resolved-dimensions.js.map +1 -1
- package/src/resolution/generators/generate-row-number-sql.js +1 -2
- package/src/resolution/generators/generate-row-number-sql.js.map +1 -1
- package/src/resolution/resolution.js +5 -13
- package/src/resolution/resolution.js.map +1 -1
- package/src/resolution/steps/apply-aliases-step.js +3 -4
- package/src/resolution/steps/apply-aliases-step.js.map +1 -1
- package/src/resolution/steps/apply-sql-overrides.js +2 -4
- package/src/resolution/steps/apply-sql-overrides.js.map +1 -1
- package/src/resolution/steps/resolution-step.js +1 -2
- package/src/resolution/steps/resolution-step.js.map +1 -1
- package/src/utils/meerkat-placeholder-replacer.d.ts +1 -2
- package/src/utils/meerkat-placeholder-replacer.js +2 -2
- package/src/utils/meerkat-placeholder-replacer.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-projection-clause.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-projection-clause.ts"],"names":[],"mappings":";;;AAAA,mGAAkG;AAClG,
|
|
1
|
+
{"version":3,"file":"get-projection-clause.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-projection-clause.ts"],"names":[],"mappings":"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"}
|
package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { QueryOptions } from '../member-formatters/get-alias';
|
|
2
1
|
import { Query, TableSchema } from '../types/cube-types';
|
|
3
2
|
interface GetWrappedBaseQueryWithProjectionsParams {
|
|
4
3
|
baseQuery: string;
|
|
5
4
|
tableSchema: TableSchema;
|
|
6
5
|
query: Query;
|
|
7
|
-
config: QueryOptions;
|
|
8
6
|
}
|
|
9
|
-
export declare const getWrappedBaseQueryWithProjections: ({ baseQuery, tableSchema, query,
|
|
7
|
+
export declare const getWrappedBaseQueryWithProjections: ({ baseQuery, tableSchema, query, }: GetWrappedBaseQueryWithProjectionsParams) => string;
|
|
10
8
|
export {};
|
package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.getWrappedBaseQueryWithProjections = void 0;
|
|
|
4
4
|
const cube_measure_transformer_1 = require("../cube-measure-transformer/cube-measure-transformer");
|
|
5
5
|
const get_aliased_columns_from_filters_1 = require("./get-aliased-columns-from-filters");
|
|
6
6
|
const get_projection_clause_1 = require("./get-projection-clause");
|
|
7
|
-
const getWrappedBaseQueryWithProjections = ({ baseQuery, tableSchema, query,
|
|
7
|
+
const getWrappedBaseQueryWithProjections = ({ baseQuery, tableSchema, query, }) => {
|
|
8
8
|
/*
|
|
9
9
|
* Im order to be able to filter on computed metric from a query, we need to project the computed metric in the base query.
|
|
10
10
|
* If theres filters supplied, we can safely return the original base query. Since nothing need to be projected and filtered in this case
|
|
@@ -12,14 +12,13 @@ const getWrappedBaseQueryWithProjections = ({ baseQuery, tableSchema, query, con
|
|
|
12
12
|
// Wrap the query into another 'SELECT * FROM (baseQuery) AS baseTable'' in order to project everything in the base query, and other computed metrics to be able to filter on them
|
|
13
13
|
const newBaseSql = `SELECT * FROM (${baseQuery}) AS ${tableSchema.name}`;
|
|
14
14
|
const aliasedColumnSet = new Set();
|
|
15
|
-
const memberProjections = (0, get_projection_clause_1.getProjectionClause)(query, tableSchema, aliasedColumnSet
|
|
15
|
+
const memberProjections = (0, get_projection_clause_1.getProjectionClause)(query, tableSchema, aliasedColumnSet);
|
|
16
16
|
const aliasFromFilters = (0, get_aliased_columns_from_filters_1.getAliasedColumnsFromFilters)({
|
|
17
17
|
aliasedColumnSet,
|
|
18
18
|
// setting measures to empty array, since we don't want to project measures present in the filters in the base query
|
|
19
19
|
tableSchema: tableSchema,
|
|
20
20
|
query,
|
|
21
21
|
meerkatFilters: query.filters,
|
|
22
|
-
config,
|
|
23
22
|
});
|
|
24
23
|
const parts = [aliasFromFilters, memberProjections].filter((part) => part !== '');
|
|
25
24
|
parts.push('*');
|
package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-wrapped-base-query-with-projections.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.ts"],"names":[],"mappings":";;;AAAA,mGAA4F;
|
|
1
|
+
{"version":3,"file":"get-wrapped-base-query-with-projections.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.ts"],"names":[],"mappings":";;;AAAA,mGAA4F;AAE5F,yFAAkF;AAClF,mEAA8D;AAQvD,MAAM,kCAAkC,GAAG,CAAC,EACjD,SAAS,EACT,WAAW,EACX,KAAK,GACoC,EAAE,EAAE;IAC7C;;;OAGG;IACH,kLAAkL;IAClL,MAAM,UAAU,GAAG,kBAAkB,SAAS,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,MAAM,iBAAiB,GAAG,IAAA,2CAAmB,EAC3C,KAAK,EACL,WAAW,EACX,gBAAgB,CACjB,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAA,+DAA4B,EAAC;QACpD,gBAAgB;QAChB,oHAAoH;QACpH,WAAW,EAAE,WAAW;QACxB,KAAK;QACL,cAAc,EAAE,KAAK,CAAC,OAAO;KAC9B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CACxD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CACtB,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,yBAAyB,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,qBAAqB,GAAG,IAAA,+CAAoB,EAChD,UAAU,EACV,yBAAyB,CAC1B,CAAC;IACF,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAtCW,QAAA,kCAAkC,sCAsC7C"}
|
|
@@ -1,72 +1,50 @@
|
|
|
1
1
|
import { TableSchema } from '../types/cube-types';
|
|
2
|
-
/**
|
|
3
|
-
* Configuration for query options.
|
|
4
|
-
*/
|
|
5
|
-
export interface QueryOptions {
|
|
6
|
-
/**
|
|
7
|
-
* When true, uses dot notation for aliases: "orders.customer_id"
|
|
8
|
-
* When false, uses underscore notation: orders__customer_id
|
|
9
|
-
*/
|
|
10
|
-
useDotNotation: boolean;
|
|
11
|
-
}
|
|
12
2
|
/**
|
|
13
3
|
* Get alias for SQL string contexts (SELECT projections, etc.).
|
|
14
4
|
* Always returns a properly quoted alias when needed.
|
|
15
5
|
*
|
|
16
6
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
17
7
|
* @param tableSchema - The table schema to look up custom aliases from
|
|
18
|
-
* @param config - Configuration with useDotNotation flag
|
|
19
8
|
* @returns The alias string, quoted when necessary
|
|
20
9
|
*
|
|
21
10
|
* @example
|
|
22
11
|
* ```typescript
|
|
23
|
-
*
|
|
24
|
-
* getAliasForSQL("orders.total", schema, { useDotNotation: false }) // "orders__total"
|
|
25
|
-
*
|
|
26
|
-
* // With useDotNotation: true
|
|
27
|
-
* getAliasForSQL("orders.total", schema, { useDotNotation: true }) // "\"orders.total\""
|
|
12
|
+
* getAliasForSQL("orders.total", schema) // "orders__total"
|
|
28
13
|
* ```
|
|
29
14
|
*/
|
|
30
|
-
export declare const getAliasForSQL: (name: string, tableSchema: TableSchema
|
|
15
|
+
export declare const getAliasForSQL: (name: string, tableSchema: TableSchema) => string;
|
|
31
16
|
/**
|
|
32
17
|
* Get alias for AST contexts (DuckDB AST nodes, column references).
|
|
33
18
|
* Returns unquoted alias - DuckDB handles quoting automatically.
|
|
34
19
|
*
|
|
35
20
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
36
21
|
* @param tableSchema - The table schema to look up custom aliases from
|
|
37
|
-
* @param config - Configuration with useDotNotation flag
|
|
38
22
|
* @returns The alias string, unquoted
|
|
39
23
|
*
|
|
40
24
|
* @example
|
|
41
25
|
* ```typescript
|
|
42
|
-
*
|
|
43
|
-
* getAliasForAST("orders.total", schema, { useDotNotation: false }) // "orders__total"
|
|
44
|
-
*
|
|
45
|
-
* // With useDotNotation: true
|
|
46
|
-
* getAliasForAST("orders.total", schema, { useDotNotation: true }) // "orders.total"
|
|
26
|
+
* getAliasForAST("orders.total", schema) // "orders__total"
|
|
47
27
|
* ```
|
|
48
28
|
*/
|
|
49
|
-
export declare const getAliasForAST: (name: string, tableSchema: TableSchema
|
|
29
|
+
export declare const getAliasForAST: (name: string, tableSchema: TableSchema) => string;
|
|
50
30
|
/**
|
|
51
31
|
* Construct alias for SQL string contexts directly from name and optional custom alias.
|
|
52
32
|
* Always returns a properly quoted alias when needed.
|
|
53
33
|
*
|
|
54
34
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
55
35
|
* @param alias - Optional custom alias override
|
|
56
|
-
* @param config - Configuration with useDotNotation flag
|
|
57
36
|
* @returns The alias string, quoted when necessary
|
|
58
37
|
*/
|
|
59
|
-
export declare const constructAliasForSQL: (name: string, alias: string | undefined
|
|
38
|
+
export declare const constructAliasForSQL: (name: string, alias: string | undefined) => string;
|
|
60
39
|
/**
|
|
61
40
|
* Construct alias for AST contexts directly from name and optional custom alias.
|
|
62
41
|
* Returns unquoted alias - DuckDB handles quoting automatically.
|
|
63
42
|
*
|
|
64
43
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
65
44
|
* @param alias - Optional custom alias override
|
|
66
|
-
* @param config - Configuration with useDotNotation flag
|
|
67
45
|
* @returns The alias string, unquoted
|
|
68
46
|
*/
|
|
69
|
-
export declare const constructAliasForAST: (name: string, alias: string | undefined
|
|
47
|
+
export declare const constructAliasForAST: (name: string, alias: string | undefined) => string;
|
|
70
48
|
/**
|
|
71
49
|
* Get alias for a schema field.
|
|
72
50
|
*
|
|
@@ -75,15 +53,13 @@ export declare const constructAliasForAST: (name: string, alias: string | undefi
|
|
|
75
53
|
* @param shouldWrapAliasWithQuotes - When true, wraps alias in quotes for SQL validity.
|
|
76
54
|
* Use `true` for SELECT projections where special characters need quoting.
|
|
77
55
|
* Use `false` for AST nodes (DuckDB auto-quotes) and internal schema references.
|
|
78
|
-
* @param config - Configuration with useDotNotation flag
|
|
79
56
|
*
|
|
80
57
|
* @deprecated Use `getAliasForSQL` or `getAliasForAST` instead for clearer intent.
|
|
81
58
|
*/
|
|
82
|
-
export declare const getAliasFromSchema: ({ name, tableSchema, shouldWrapAliasWithQuotes,
|
|
59
|
+
export declare const getAliasFromSchema: ({ name, tableSchema, shouldWrapAliasWithQuotes, }: {
|
|
83
60
|
name: string;
|
|
84
61
|
tableSchema: TableSchema;
|
|
85
62
|
shouldWrapAliasWithQuotes: boolean;
|
|
86
|
-
config: QueryOptions;
|
|
87
63
|
}) => string;
|
|
88
64
|
/**
|
|
89
65
|
* Construct alias directly from name and optional custom alias.
|
|
@@ -93,15 +69,13 @@ export declare const getAliasFromSchema: ({ name, tableSchema, shouldWrapAliasWi
|
|
|
93
69
|
* @param shouldWrapAliasWithQuotes - When true, wraps alias in quotes for SQL validity.
|
|
94
70
|
* Use `true` for SELECT projections where special characters need quoting.
|
|
95
71
|
* Use `false` for AST nodes (DuckDB auto-quotes) and internal schema references.
|
|
96
|
-
* @param config - Configuration with useDotNotation flag
|
|
97
72
|
*
|
|
98
73
|
* @deprecated Use `constructAliasForSQL` or `constructAliasForAST` instead for clearer intent.
|
|
99
74
|
*/
|
|
100
|
-
export declare const constructAlias: ({ name, alias, shouldWrapAliasWithQuotes,
|
|
75
|
+
export declare const constructAlias: ({ name, alias, shouldWrapAliasWithQuotes, }: {
|
|
101
76
|
name: string;
|
|
102
77
|
alias?: string | undefined;
|
|
103
78
|
shouldWrapAliasWithQuotes: boolean;
|
|
104
|
-
config: QueryOptions;
|
|
105
79
|
}) => string;
|
|
106
80
|
/**
|
|
107
81
|
* Creates a compound alias by joining two alias strings with " - ".
|
|
@@ -4,31 +4,23 @@ exports.constructCompoundAlias = exports.constructAlias = exports.getAliasFromSc
|
|
|
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");
|
|
7
|
-
// ============================================================================
|
|
8
|
-
// NEW FLAG-AWARE API (recommended)
|
|
9
|
-
// ============================================================================
|
|
10
7
|
/**
|
|
11
8
|
* Get alias for SQL string contexts (SELECT projections, etc.).
|
|
12
9
|
* Always returns a properly quoted alias when needed.
|
|
13
10
|
*
|
|
14
11
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
15
12
|
* @param tableSchema - The table schema to look up custom aliases from
|
|
16
|
-
* @param config - Configuration with useDotNotation flag
|
|
17
13
|
* @returns The alias string, quoted when necessary
|
|
18
14
|
*
|
|
19
15
|
* @example
|
|
20
16
|
* ```typescript
|
|
21
|
-
*
|
|
22
|
-
* getAliasForSQL("orders.total", schema, { useDotNotation: false }) // "orders__total"
|
|
23
|
-
*
|
|
24
|
-
* // With useDotNotation: true
|
|
25
|
-
* getAliasForSQL("orders.total", schema, { useDotNotation: true }) // "\"orders.total\""
|
|
17
|
+
* getAliasForSQL("orders.total", schema) // "orders__total"
|
|
26
18
|
* ```
|
|
27
19
|
*/
|
|
28
|
-
const getAliasForSQL = (name, tableSchema
|
|
20
|
+
const getAliasForSQL = (name, tableSchema) => {
|
|
29
21
|
var _a;
|
|
30
22
|
const [, field] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(name);
|
|
31
|
-
return (0, exports.constructAliasForSQL)(name, (_a = (0, find_in_table_schema_1.findInSchema)(field, tableSchema)) === null || _a === void 0 ? void 0 : _a.alias
|
|
23
|
+
return (0, exports.constructAliasForSQL)(name, (_a = (0, find_in_table_schema_1.findInSchema)(field, tableSchema)) === null || _a === void 0 ? void 0 : _a.alias);
|
|
32
24
|
};
|
|
33
25
|
exports.getAliasForSQL = getAliasForSQL;
|
|
34
26
|
/**
|
|
@@ -37,22 +29,17 @@ exports.getAliasForSQL = getAliasForSQL;
|
|
|
37
29
|
*
|
|
38
30
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
39
31
|
* @param tableSchema - The table schema to look up custom aliases from
|
|
40
|
-
* @param config - Configuration with useDotNotation flag
|
|
41
32
|
* @returns The alias string, unquoted
|
|
42
33
|
*
|
|
43
34
|
* @example
|
|
44
35
|
* ```typescript
|
|
45
|
-
*
|
|
46
|
-
* getAliasForAST("orders.total", schema, { useDotNotation: false }) // "orders__total"
|
|
47
|
-
*
|
|
48
|
-
* // With useDotNotation: true
|
|
49
|
-
* getAliasForAST("orders.total", schema, { useDotNotation: true }) // "orders.total"
|
|
36
|
+
* getAliasForAST("orders.total", schema) // "orders__total"
|
|
50
37
|
* ```
|
|
51
38
|
*/
|
|
52
|
-
const getAliasForAST = (name, tableSchema
|
|
39
|
+
const getAliasForAST = (name, tableSchema) => {
|
|
53
40
|
var _a;
|
|
54
41
|
const [, field] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(name);
|
|
55
|
-
return (0, exports.constructAliasForAST)(name, (_a = (0, find_in_table_schema_1.findInSchema)(field, tableSchema)) === null || _a === void 0 ? void 0 : _a.alias
|
|
42
|
+
return (0, exports.constructAliasForAST)(name, (_a = (0, find_in_table_schema_1.findInSchema)(field, tableSchema)) === null || _a === void 0 ? void 0 : _a.alias);
|
|
56
43
|
};
|
|
57
44
|
exports.getAliasForAST = getAliasForAST;
|
|
58
45
|
/**
|
|
@@ -61,23 +48,15 @@ exports.getAliasForAST = getAliasForAST;
|
|
|
61
48
|
*
|
|
62
49
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
63
50
|
* @param alias - Optional custom alias override
|
|
64
|
-
* @param config - Configuration with useDotNotation flag
|
|
65
51
|
* @returns The alias string, quoted when necessary
|
|
66
52
|
*/
|
|
67
|
-
const constructAliasForSQL = (name, alias
|
|
53
|
+
const constructAliasForSQL = (name, alias) => {
|
|
68
54
|
if (alias) {
|
|
69
55
|
// Custom aliases always need quotes in SQL context (may contain spaces/special chars)
|
|
70
56
|
return `"${alias}"`;
|
|
71
57
|
}
|
|
72
|
-
const safeKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name, {
|
|
73
|
-
useDotNotation: config.useDotNotation,
|
|
74
|
-
});
|
|
75
|
-
if (config.useDotNotation) {
|
|
76
|
-
// With dot notation, we need to quote the safe key since it contains dots
|
|
77
|
-
return `"${safeKey}"`;
|
|
78
|
-
}
|
|
79
58
|
// Underscore notation doesn't need quotes
|
|
80
|
-
return
|
|
59
|
+
return (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name);
|
|
81
60
|
};
|
|
82
61
|
exports.constructAliasForSQL = constructAliasForSQL;
|
|
83
62
|
/**
|
|
@@ -86,21 +65,17 @@ exports.constructAliasForSQL = constructAliasForSQL;
|
|
|
86
65
|
*
|
|
87
66
|
* @param name - The member key (e.g., "orders.total_amount")
|
|
88
67
|
* @param alias - Optional custom alias override
|
|
89
|
-
* @param config - Configuration with useDotNotation flag
|
|
90
68
|
* @returns The alias string, unquoted
|
|
91
69
|
*/
|
|
92
|
-
const constructAliasForAST = (name, alias
|
|
70
|
+
const constructAliasForAST = (name, alias) => {
|
|
93
71
|
if (alias) {
|
|
94
72
|
// Return custom alias without quotes - DuckDB will handle quoting
|
|
95
73
|
return alias;
|
|
96
74
|
}
|
|
97
75
|
// Return safe key without quotes - DuckDB will handle quoting
|
|
98
|
-
return (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name
|
|
76
|
+
return (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name);
|
|
99
77
|
};
|
|
100
78
|
exports.constructAliasForAST = constructAliasForAST;
|
|
101
|
-
// ============================================================================
|
|
102
|
-
// LEGACY API (deprecated, kept for backward compatibility)
|
|
103
|
-
// ============================================================================
|
|
104
79
|
/**
|
|
105
80
|
* Get alias for a schema field.
|
|
106
81
|
*
|
|
@@ -109,18 +84,16 @@ exports.constructAliasForAST = constructAliasForAST;
|
|
|
109
84
|
* @param shouldWrapAliasWithQuotes - When true, wraps alias in quotes for SQL validity.
|
|
110
85
|
* Use `true` for SELECT projections where special characters need quoting.
|
|
111
86
|
* Use `false` for AST nodes (DuckDB auto-quotes) and internal schema references.
|
|
112
|
-
* @param config - Configuration with useDotNotation flag
|
|
113
87
|
*
|
|
114
88
|
* @deprecated Use `getAliasForSQL` or `getAliasForAST` instead for clearer intent.
|
|
115
89
|
*/
|
|
116
|
-
const getAliasFromSchema = ({ name, tableSchema, shouldWrapAliasWithQuotes,
|
|
90
|
+
const getAliasFromSchema = ({ name, tableSchema, shouldWrapAliasWithQuotes, }) => {
|
|
117
91
|
var _a;
|
|
118
92
|
const [, field] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(name);
|
|
119
93
|
return (0, exports.constructAlias)({
|
|
120
94
|
name,
|
|
121
95
|
alias: (_a = (0, find_in_table_schema_1.findInSchema)(field, tableSchema)) === null || _a === void 0 ? void 0 : _a.alias,
|
|
122
96
|
shouldWrapAliasWithQuotes,
|
|
123
|
-
config,
|
|
124
97
|
});
|
|
125
98
|
};
|
|
126
99
|
exports.getAliasFromSchema = getAliasFromSchema;
|
|
@@ -132,11 +105,10 @@ exports.getAliasFromSchema = getAliasFromSchema;
|
|
|
132
105
|
* @param shouldWrapAliasWithQuotes - When true, wraps alias in quotes for SQL validity.
|
|
133
106
|
* Use `true` for SELECT projections where special characters need quoting.
|
|
134
107
|
* Use `false` for AST nodes (DuckDB auto-quotes) and internal schema references.
|
|
135
|
-
* @param config - Configuration with useDotNotation flag
|
|
136
108
|
*
|
|
137
109
|
* @deprecated Use `constructAliasForSQL` or `constructAliasForAST` instead for clearer intent.
|
|
138
110
|
*/
|
|
139
|
-
const constructAlias = ({ name, alias, shouldWrapAliasWithQuotes,
|
|
111
|
+
const constructAlias = ({ name, alias, shouldWrapAliasWithQuotes, }) => {
|
|
140
112
|
if (alias) {
|
|
141
113
|
if (shouldWrapAliasWithQuotes) {
|
|
142
114
|
// Alias may contain special characters or spaces, so we need to wrap in quotes.
|
|
@@ -144,13 +116,7 @@ const constructAlias = ({ name, alias, shouldWrapAliasWithQuotes, config, }) =>
|
|
|
144
116
|
}
|
|
145
117
|
return alias;
|
|
146
118
|
}
|
|
147
|
-
|
|
148
|
-
const safeKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name, config);
|
|
149
|
-
if (config.useDotNotation && shouldWrapAliasWithQuotes) {
|
|
150
|
-
// With dot notation and SQL context, wrap in quotes
|
|
151
|
-
return `"${safeKey}"`;
|
|
152
|
-
}
|
|
153
|
-
return safeKey;
|
|
119
|
+
return (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name);
|
|
154
120
|
};
|
|
155
121
|
exports.constructAlias = constructAlias;
|
|
156
122
|
/**
|
|
@@ -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;
|
|
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;AAEnF;;;;;;;;;;;;GAYG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,WAAwB,EAAU,EAAE;;IAC/E,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAA,gEAA4B,EAAC,IAAI,CAAC,CAAC;IACrD,OAAO,IAAA,4BAAoB,EAAC,IAAI,EAAE,MAAA,IAAA,mCAAY,EAAC,KAAK,EAAE,WAAW,CAAC,0CAAE,KAAK,CAAC,CAAC;AAC7E,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEF;;;;;;;;;;;;GAYG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,WAAwB,EAAU,EAAE;;IAC/E,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAA,gEAA4B,EAAC,IAAI,CAAC,CAAC;IACrD,OAAO,IAAA,4BAAoB,EAAC,IAAI,EAAE,MAAA,IAAA,mCAAY,EAAC,KAAK,EAAE,WAAW,CAAC,0CAAE,KAAK,CAAC,CAAC;AAC7E,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEF;;;;;;;GAOG;AACI,MAAM,oBAAoB,GAAG,CAClC,IAAY,EACZ,KAAyB,EACjB,EAAE;IACV,IAAI,KAAK,EAAE;QACT,sFAAsF;QACtF,OAAO,IAAI,KAAK,GAAG,CAAC;KACrB;IACD,0CAA0C;IAC1C,OAAO,IAAA,2CAAkB,EAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B;AAEF;;;;;;;GAOG;AACI,MAAM,oBAAoB,GAAG,CAClC,IAAY,EACZ,KAAyB,EACjB,EAAE;IACV,IAAI,KAAK,EAAE;QACT,kEAAkE;QAClE,OAAO,KAAK,CAAC;KACd;IACD,8DAA8D;IAC9D,OAAO,IAAA,2CAAkB,EAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B;AAEF;;;;;;;;;;GAUG;AACI,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,WAAW,EACX,yBAAyB,GAK1B,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,yBAAyB;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,kBAAkB,sBAe7B;AAEF;;;;;;;;;;GAUG;AACI,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,yBAAyB,GAK1B,EAAU,EAAE;IACX,IAAI,KAAK,EAAE;QACT,IAAI,yBAAyB,EAAE;YAC7B,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, constructAliasForAST, constructAliasForSQL, constructCompoundAlias, getAliasForAST, getAliasForSQL, getAliasFromSchema,
|
|
2
|
+
export { constructAlias, constructAliasForAST, constructAliasForSQL, constructCompoundAlias, getAliasForAST, getAliasForSQL, getAliasFromSchema, } from './get-alias';
|
|
3
3
|
export { getNamespacedKey } from './get-namespaced-key';
|
|
4
|
-
export { memberKeyToSafeKey
|
|
4
|
+
export { memberKeyToSafeKey } from './member-key-to-safe-key';
|
|
5
5
|
export { splitIntoDataSourceAndFields } from './split-into-data-source-and-fields';
|
|
@@ -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,yCAQqB;AAPnB,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AACpB,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AACtB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAEpB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,yFAAmF;AAA1E,iJAAA,4BAA4B,OAAA"}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
export interface MemberKeyToSafeKeyOptions {
|
|
2
|
-
/**
|
|
3
|
-
* When true, keeps the dot notation (returns memberKey as-is).
|
|
4
|
-
* When false (default), converts dots to underscores for SQL-safe identifiers.
|
|
5
|
-
*/
|
|
6
|
-
useDotNotation: boolean;
|
|
7
|
-
}
|
|
8
1
|
/**
|
|
9
2
|
* Converts a member key to a safe key for use in SQL.
|
|
3
|
+
* Converts dots to double underscores for SQL-safe identifiers.
|
|
10
4
|
*
|
|
11
5
|
* @param memberKey - The member key (e.g., "orders.customer_id")
|
|
12
|
-
* @
|
|
13
|
-
* @returns The safe key:
|
|
14
|
-
* - With useDotNotation=true: "orders.customer_id" (unchanged)
|
|
15
|
-
* - With useDotNotation=false (default): "orders__customer_id"
|
|
6
|
+
* @returns The safe key (e.g., "orders__customer_id")
|
|
16
7
|
*/
|
|
17
|
-
export declare const memberKeyToSafeKey: (memberKey: string
|
|
8
|
+
export declare const memberKeyToSafeKey: (memberKey: string) => string;
|
|
@@ -4,19 +4,12 @@ exports.memberKeyToSafeKey = void 0;
|
|
|
4
4
|
const constants_1 = require("./constants");
|
|
5
5
|
/**
|
|
6
6
|
* Converts a member key to a safe key for use in SQL.
|
|
7
|
+
* Converts dots to double underscores for SQL-safe identifiers.
|
|
7
8
|
*
|
|
8
9
|
* @param memberKey - The member key (e.g., "orders.customer_id")
|
|
9
|
-
* @
|
|
10
|
-
* @returns The safe key:
|
|
11
|
-
* - With useDotNotation=true: "orders.customer_id" (unchanged)
|
|
12
|
-
* - With useDotNotation=false (default): "orders__customer_id"
|
|
10
|
+
* @returns The safe key (e.g., "orders__customer_id")
|
|
13
11
|
*/
|
|
14
|
-
const memberKeyToSafeKey = (memberKey
|
|
15
|
-
if (options.useDotNotation) {
|
|
16
|
-
// Keep dot notation - the caller is responsible for quoting when needed
|
|
17
|
-
return memberKey;
|
|
18
|
-
}
|
|
19
|
-
// Legacy behavior: convert dots to double underscores
|
|
12
|
+
const memberKeyToSafeKey = (memberKey) => {
|
|
20
13
|
return memberKey.split(constants_1.COLUMN_NAME_DELIMITER).join(constants_1.MEERKAT_OUTPUT_DELIMITER);
|
|
21
14
|
};
|
|
22
15
|
exports.memberKeyToSafeKey = memberKeyToSafeKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-key-to-safe-key.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/member-key-to-safe-key.ts"],"names":[],"mappings":";;;AAAA,2CAA8E;
|
|
1
|
+
{"version":3,"file":"member-key-to-safe-key.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/member-key-to-safe-key.ts"],"names":[],"mappings":";;;AAAA,2CAA8E;AAE9E;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC9D,OAAO,SAAS,CAAC,KAAK,CAAC,iCAAqB,CAAC,CAAC,IAAI,CAAC,oCAAwB,CAAC,CAAC;AAC/E,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B"}
|
|
@@ -5,16 +5,13 @@ const get_alias_1 = require("../../member-formatters/get-alias");
|
|
|
5
5
|
const member_key_to_safe_key_1 = require("../../member-formatters/member-key-to-safe-key");
|
|
6
6
|
const find_in_table_schema_1 = require("../../utils/find-in-table-schema");
|
|
7
7
|
const generateResolutionJoinPaths = (baseDataSourceName, resolutionConfig, baseTableSchemas) => {
|
|
8
|
-
const config = { useDotNotation: false };
|
|
9
8
|
return resolutionConfig.columnConfigs.map((columnConfig) => {
|
|
10
9
|
var _a;
|
|
11
10
|
return [
|
|
12
11
|
{
|
|
13
12
|
left: baseDataSourceName,
|
|
14
|
-
right: (0, member_key_to_safe_key_1.memberKeyToSafeKey)(columnConfig.name,
|
|
15
|
-
|
|
16
|
-
}),
|
|
17
|
-
on: (0, get_alias_1.constructAliasForAST)(columnConfig.name, (_a = (0, find_in_table_schema_1.findInSchemas)(columnConfig.name, baseTableSchemas)) === null || _a === void 0 ? void 0 : _a.alias, config),
|
|
13
|
+
right: (0, member_key_to_safe_key_1.memberKeyToSafeKey)(columnConfig.name),
|
|
14
|
+
on: (0, get_alias_1.constructAliasForAST)(columnConfig.name, (_a = (0, find_in_table_schema_1.findInSchemas)(columnConfig.name, baseTableSchemas)) === null || _a === void 0 ? void 0 : _a.alias),
|
|
18
15
|
},
|
|
19
16
|
];
|
|
20
17
|
});
|
|
@@ -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,iEAAyE;AACzE,2FAAoF;AAGpF,2EAAiE;AAG1D,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAC1B,gBAAkC,EAClC,gBAA+B,EACnB,EAAE;IACd,
|
|
1
|
+
{"version":3,"file":"generate-resolution-join-paths.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-join-paths.ts"],"names":[],"mappings":";;;AAAA,iEAAyE;AACzE,2FAAoF;AAGpF,2EAAiE;AAG1D,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAC1B,gBAAkC,EAClC,gBAA+B,EACnB,EAAE;IACd,OAAO,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;;QAAC,OAAA;YAC1D;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,IAAA,2CAAkB,EAAC,YAAY,CAAC,IAAI,CAAC;gBAC5C,EAAE,EAAE,IAAA,gCAAoB,EACtB,YAAY,CAAC,IAAI,EACjB,MAAA,IAAA,oCAAa,EAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK,CAC1D;aACF;SACF,CAAA;KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,2BAA2B,+BAetC"}
|
|
@@ -4,14 +4,13 @@ exports.generateResolutionSchemas = void 0;
|
|
|
4
4
|
const member_formatters_1 = require("../../member-formatters");
|
|
5
5
|
const find_in_table_schema_1 = require("../../utils/find-in-table-schema");
|
|
6
6
|
const generateResolutionSchemas = (config) => {
|
|
7
|
-
const options = { useDotNotation: false };
|
|
8
7
|
const resolutionSchemas = [];
|
|
9
8
|
config.columnConfigs.forEach((colConfig) => {
|
|
10
9
|
const tableSchema = config.tableSchemas.find((ts) => ts.name === colConfig.source);
|
|
11
10
|
if (!tableSchema) {
|
|
12
11
|
throw new Error(`Table schema not found for ${colConfig.source}`);
|
|
13
12
|
}
|
|
14
|
-
const baseName = (0, member_formatters_1.memberKeyToSafeKey)(colConfig.name
|
|
13
|
+
const baseName = (0, member_formatters_1.memberKeyToSafeKey)(colConfig.name);
|
|
15
14
|
// For each column that needs to be resolved, create a copy of the relevant table schema.
|
|
16
15
|
// We use the name of the column in the base query as the table schema name
|
|
17
16
|
// to avoid conflicts.
|
|
@@ -27,10 +26,10 @@ const generateResolutionSchemas = (config) => {
|
|
|
27
26
|
return {
|
|
28
27
|
// Need to create a new name due to limitations with how
|
|
29
28
|
// CubeToSql handles duplicate dimension names between different sources.
|
|
30
|
-
name: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)
|
|
29
|
+
name: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)),
|
|
31
30
|
sql: `${baseName}.${col}`,
|
|
32
31
|
type: dimension.type,
|
|
33
|
-
alias: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)
|
|
32
|
+
alias: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)),
|
|
34
33
|
};
|
|
35
34
|
}),
|
|
36
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-resolution-schemas.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-schemas.ts"],"names":[],"mappings":";;;AAAA,+DAA+E;AAE/E,2EAA0E;AAGnE,MAAM,yBAAyB,GAAG,CAAC,MAAwB,EAAE,EAAE;IACpE,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-resolution-schemas.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-schemas.ts"],"names":[],"mappings":";;;AAAA,+DAA+E;AAE/E,2EAA0E;AAGnE,MAAM,yBAAyB,GAAG,CAAC,MAAwB,EAAE,EAAE;IACpE,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;QAEpD,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;AA1CW,QAAA,yBAAyB,6BA0CpC"}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateResolvedDimensions = void 0;
|
|
4
4
|
const member_formatters_1 = require("../../member-formatters");
|
|
5
5
|
const generateResolvedDimensions = (baseDataSourceName, query, config, columnProjections) => {
|
|
6
|
-
const options = { useDotNotation: false };
|
|
7
6
|
// If column projections are provided, use those.
|
|
8
7
|
// Otherwise, use all measures and dimensions from the original query.
|
|
9
8
|
const aggregatedDimensions = columnProjections
|
|
@@ -13,11 +12,11 @@ const generateResolvedDimensions = (baseDataSourceName, query, config, columnPro
|
|
|
13
12
|
const columnConfig = config.columnConfigs.find((c) => c.name === dimension);
|
|
14
13
|
if (!columnConfig) {
|
|
15
14
|
return [
|
|
16
|
-
(0, member_formatters_1.getNamespacedKey)(baseDataSourceName, (0, member_formatters_1.memberKeyToSafeKey)(dimension
|
|
15
|
+
(0, member_formatters_1.getNamespacedKey)(baseDataSourceName, (0, member_formatters_1.memberKeyToSafeKey)(dimension)),
|
|
17
16
|
];
|
|
18
17
|
}
|
|
19
18
|
else {
|
|
20
|
-
return columnConfig.resolutionColumns.map((col) => (0, member_formatters_1.getNamespacedKey)((0, member_formatters_1.memberKeyToSafeKey)(dimension
|
|
19
|
+
return columnConfig.resolutionColumns.map((col) => (0, member_formatters_1.getNamespacedKey)((0, member_formatters_1.memberKeyToSafeKey)(dimension), (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(columnConfig.name, col))));
|
|
21
20
|
}
|
|
22
21
|
});
|
|
23
22
|
return resolvedDimensions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-resolved-dimensions.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolved-dimensions.ts"],"names":[],"mappings":";;;AAAA,+DAA+E;AAIxE,MAAM,0BAA0B,GAAG,CACxC,kBAA0B,EAC1B,KAAY,EACZ,MAAwB,EACxB,iBAA4B,EAClB,EAAE;IACZ,
|
|
1
|
+
{"version":3,"file":"generate-resolved-dimensions.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolved-dimensions.ts"],"names":[],"mappings":";;;AAAA,+DAA+E;AAIxE,MAAM,0BAA0B,GAAG,CACxC,kBAA0B,EAC1B,KAAY,EACZ,MAAwB,EACxB,iBAA4B,EAClB,EAAE;IACZ,iDAAiD;IACjD,sEAAsE;IACtE,MAAM,oBAAoB,GAAG,iBAAiB;QAC5C,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAa,oBAAoB,CAAC,OAAO,CAC/D,CAAC,SAAS,EAAE,EAAE;QACZ,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;gBACL,IAAA,oCAAgB,EAAC,kBAAkB,EAAE,IAAA,sCAAkB,EAAC,SAAS,CAAC,CAAC;aACpE,CAAC;SACH;aAAM;YACL,OAAO,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,IAAA,oCAAgB,EACd,IAAA,sCAAkB,EAAC,SAAS,CAAC,EAC7B,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAC7D,CACF,CAAC;SACH;IACH,CAAC,CACF,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAjCW,QAAA,0BAA0B,8BAiCrC"}
|
|
@@ -12,12 +12,11 @@ const member_formatters_1 = require("../../member-formatters");
|
|
|
12
12
|
* @returns SQL expression for row_number() OVER (ORDER BY ...)
|
|
13
13
|
*/
|
|
14
14
|
const generateRowNumberSql = (query, dimensions, baseTableName) => {
|
|
15
|
-
const options = { useDotNotation: false };
|
|
16
15
|
let rowNumberSql = 'row_number() OVER (';
|
|
17
16
|
if (query.order && Object.keys(query.order).length > 0) {
|
|
18
17
|
const orderClauses = Object.entries(query.order).map(([member, direction]) => {
|
|
19
18
|
// Find the actual column name/alias in the base table dimensions
|
|
20
|
-
const safeMember = (0, member_formatters_1.memberKeyToSafeKey)(member
|
|
19
|
+
const safeMember = (0, member_formatters_1.memberKeyToSafeKey)(member);
|
|
21
20
|
const dimension = dimensions.find((d) => d.name === safeMember || d.alias === safeMember);
|
|
22
21
|
const columnName = dimension
|
|
23
22
|
? dimension.alias || dimension.name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-row-number-sql.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-row-number-sql.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAE7D;;;;;;;;GAQG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAyC,EACzC,UAA8C,EAC9C,aAAqB,EACb,EAAE;IACV,
|
|
1
|
+
{"version":3,"file":"generate-row-number-sql.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-row-number-sql.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAE7D;;;;;;;;GAQG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAyC,EACzC,UAA8C,EAC9C,aAAqB,EACb,EAAE;IACV,IAAI,YAAY,GAAG,qBAAqB,CAAC;IACzC,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE;YACtB,iEAAiE;YACjE,MAAM,UAAU,GAAG,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CACvD,CAAC;YACF,MAAM,UAAU,GAAG,SAAS;gBAC1B,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;gBACnC,CAAC,CAAC,UAAU,CAAC;YACf,OAAO,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC,CACF,CAAC;QACF,YAAY,IAAI,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;KACvD;IACD,YAAY,IAAI,GAAG,CAAC;IACpB,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAxBW,QAAA,oBAAoB,wBAwB/B;AAEF,MAAM,mBAAmB,GAAG,CAC1B,aAAqB,EACrB,UAAkB,EAClB,SAAiB,EACjB,EAAE;IACF,OAAO,GAAG,aAAa,KAAK,UAAU,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;AACvE,CAAC,CAAC"}
|
|
@@ -34,17 +34,15 @@ const shouldSkipResolution = (resolutionConfig, query, columnProjections) => {
|
|
|
34
34
|
};
|
|
35
35
|
exports.shouldSkipResolution = shouldSkipResolution;
|
|
36
36
|
const constructBaseDimension = (name, schema) => {
|
|
37
|
-
const config = { useDotNotation: false };
|
|
38
37
|
return {
|
|
39
|
-
name: (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name
|
|
40
|
-
sql: `${types_1.BASE_DATA_SOURCE_NAME}.${(0, get_alias_1.constructAliasForSQL)(name, schema.alias
|
|
38
|
+
name: (0, member_key_to_safe_key_1.memberKeyToSafeKey)(name),
|
|
39
|
+
sql: `${types_1.BASE_DATA_SOURCE_NAME}.${(0, get_alias_1.constructAliasForSQL)(name, schema.alias)}`,
|
|
41
40
|
type: schema.type,
|
|
42
41
|
// Constructs alias to match the name in the base query.
|
|
43
|
-
alias: (0, get_alias_1.constructAliasForAST)(name, schema.alias
|
|
42
|
+
alias: (0, get_alias_1.constructAliasForAST)(name, schema.alias),
|
|
44
43
|
};
|
|
45
44
|
};
|
|
46
45
|
const createBaseTableSchema = (baseSql, tableSchemas, resolutionConfig, measures, dimensions) => {
|
|
47
|
-
const config = { useDotNotation: false };
|
|
48
46
|
const schemaByName = {};
|
|
49
47
|
tableSchemas.forEach((tableSchema) => {
|
|
50
48
|
tableSchema.dimensions.forEach((dimension) => {
|
|
@@ -70,15 +68,9 @@ const createBaseTableSchema = (baseSql, tableSchemas, resolutionConfig, measures
|
|
|
70
68
|
}),
|
|
71
69
|
joins: resolutionConfig.columnConfigs.map((columnConfig) => {
|
|
72
70
|
var _a;
|
|
73
|
-
const targetTable = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(columnConfig.name
|
|
74
|
-
useDotNotation: false,
|
|
75
|
-
});
|
|
76
|
-
// Quote the table name if it contains dots (useDotNotation mode)
|
|
77
|
-
const quotedTargetTable = targetTable.includes('.')
|
|
78
|
-
? `"${targetTable}"`
|
|
79
|
-
: targetTable;
|
|
71
|
+
const targetTable = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(columnConfig.name);
|
|
80
72
|
return {
|
|
81
|
-
sql: `${types_1.BASE_DATA_SOURCE_NAME}.${(0, get_alias_1.constructAliasForSQL)(columnConfig.name, (_a = schemaByName[columnConfig.name]) === null || _a === void 0 ? void 0 : _a.alias
|
|
73
|
+
sql: `${types_1.BASE_DATA_SOURCE_NAME}.${(0, get_alias_1.constructAliasForSQL)(columnConfig.name, (_a = schemaByName[columnConfig.name]) === null || _a === void 0 ? void 0 : _a.alias)} = ${targetTable}.${columnConfig.joinColumn}`,
|
|
82
74
|
};
|
|
83
75
|
}),
|
|
84
76
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../../../meerkat-core/src/resolution/resolution.ts"],"names":[],"mappings":";;;AAAA,8DAGwC;AACxC,gFAA2E;AAC3E,wFAAiF;AAGjF,wEAAkE;AAClE,mCAIiB;AAEjB;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,CAChC,SAAiB,EACjB,MAAwC,EAChC,EAAE;IACV,OAAO,GAAG,SAAS,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;AACzD,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEF;;;;;;;GAOG;AACI,MAAM,oBAAoB,GAAG,CAClC,gBAAkC,EAClC,KAAY,EACZ,iBAA4B,EACnB,EAAE;IACX,mGAAmG;IACnG,4DAA4D;IAC5D,OAAO,CACL,gBAAgB,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAC3C,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,MAAK,CAAC;QAC/B,CAAC,KAAK,CAAC,KAAK,CACb,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEF,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,MAA2B,EAAE,EAAE;IAC3E,
|
|
1
|
+
{"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../../../meerkat-core/src/resolution/resolution.ts"],"names":[],"mappings":"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"}
|