@devrev/meerkat-browser 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
CHANGED
|
@@ -5,16 +5,39 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const meerkat_core_1 = require("@devrev/meerkat-core");
|
|
6
6
|
const browser_cube_to_sql_1 = require("../browser-cube-to-sql/browser-cube-to-sql");
|
|
7
7
|
const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolutionConfig, columnProjections, contextParams, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
// Check if resolution should be skipped
|
|
9
|
+
if ((0, meerkat_core_1.shouldSkipResolution)(resolutionConfig, query, columnProjections)) {
|
|
10
|
+
return yield (0, browser_cube_to_sql_1.cubeQueryToSQL)({
|
|
11
|
+
connection,
|
|
12
|
+
query,
|
|
13
|
+
tableSchemas,
|
|
14
|
+
contextParams,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//
|
|
18
|
+
// Why remove aliases?
|
|
19
|
+
// The resolution pipeline (unnest → join lookups → re-aggregate) operates on field names
|
|
20
|
+
// internally for consistency and simplicity. Using aliases throughout would complicate
|
|
21
|
+
// the logic as we transform schemas through multiple steps.
|
|
22
|
+
//
|
|
23
|
+
// Alias handling strategy:
|
|
24
|
+
// 1. Strip aliases here - work with field names (e.g., tickets__id, tickets__owners)
|
|
25
|
+
// 2. Run entire resolution pipeline with field names
|
|
26
|
+
// 3. At the final step (applyAliases), restore aliases from original schemas
|
|
27
|
+
// 4. Generate final SQL with user-friendly aliases (e.g., "ID", "Owners")
|
|
28
|
+
//
|
|
29
|
+
// Benefits:
|
|
30
|
+
// - Cleaner internal logic (no alias tracking through transformations)
|
|
31
|
+
// - Single source of truth for aliases (original tableSchemas)
|
|
32
|
+
// - Easier to debug (field names are consistent throughout pipeline)
|
|
33
|
+
// - Separation of concerns (resolution logic vs. display formatting)
|
|
34
|
+
const tableSchemasWithoutAliases = tableSchemas.map((schema) => (Object.assign(Object.assign({}, schema), { dimensions: schema.dimensions.map((dim) => (Object.assign(Object.assign({}, dim), { alias: undefined }))), measures: schema.measures.map((measure) => (Object.assign(Object.assign({}, measure), { alias: undefined }))) })));
|
|
8
35
|
const baseSql = yield (0, browser_cube_to_sql_1.cubeQueryToSQL)({
|
|
9
36
|
connection,
|
|
10
37
|
query,
|
|
11
|
-
tableSchemas,
|
|
38
|
+
tableSchemas: tableSchemasWithoutAliases,
|
|
12
39
|
contextParams,
|
|
13
40
|
});
|
|
14
|
-
// Check if resolution should be skipped
|
|
15
|
-
if ((0, meerkat_core_1.shouldSkipResolution)(resolutionConfig, query, columnProjections)) {
|
|
16
|
-
return baseSql;
|
|
17
|
-
}
|
|
18
41
|
if (!columnProjections) {
|
|
19
42
|
columnProjections = [...(query.dimensions || []), ...query.measures];
|
|
20
43
|
}
|
|
@@ -23,22 +46,26 @@ const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolut
|
|
|
23
46
|
resolutionConfig.columnConfigs = resolutionConfig.columnConfigs.filter((config) => {
|
|
24
47
|
return columnProjections === null || columnProjections === void 0 ? void 0 : columnProjections.includes(config.name);
|
|
25
48
|
});
|
|
26
|
-
const baseSchema = (0, meerkat_core_1.createBaseTableSchema)(baseSql,
|
|
49
|
+
const baseSchema = (0, meerkat_core_1.createBaseTableSchema)(baseSql, tableSchemasWithoutAliases, // Use alias-free schemas
|
|
50
|
+
resolutionConfig, [], columnProjections);
|
|
51
|
+
// At this point, filters/sorts are baked into baseSql using original values
|
|
52
|
+
// We can now override dimensions/measures in the base schema with custom SQL expressions for display
|
|
53
|
+
const schemaWithOverrides = (0, meerkat_core_1.applySqlOverrides)(baseSchema, resolutionConfig);
|
|
54
|
+
// Transform field names in configs to match base table schema format
|
|
55
|
+
resolutionConfig.columnConfigs.forEach((config) => {
|
|
56
|
+
config.name = (0, meerkat_core_1.memberKeyToSafeKey)(config.name);
|
|
57
|
+
});
|
|
27
58
|
const rowIdDimension = {
|
|
28
59
|
name: meerkat_core_1.ROW_ID_DIMENSION_NAME,
|
|
29
|
-
sql: (0, meerkat_core_1.generateRowNumberSql)(query,
|
|
60
|
+
sql: (0, meerkat_core_1.generateRowNumberSql)(query, schemaWithOverrides.dimensions, meerkat_core_1.BASE_DATA_SOURCE_NAME),
|
|
30
61
|
type: 'number',
|
|
31
62
|
alias: meerkat_core_1.ROW_ID_DIMENSION_NAME,
|
|
32
63
|
};
|
|
33
|
-
|
|
64
|
+
schemaWithOverrides.dimensions.push(rowIdDimension);
|
|
34
65
|
columnProjections.push(meerkat_core_1.ROW_ID_DIMENSION_NAME);
|
|
35
|
-
// Doing this because we need to use the original name of the column in the base table schema.
|
|
36
|
-
resolutionConfig.columnConfigs.forEach((config) => {
|
|
37
|
-
config.name = (0, meerkat_core_1.memberKeyToSafeKey)(config.name);
|
|
38
|
-
});
|
|
39
66
|
// Generate SQL with row_id and unnested arrays
|
|
40
67
|
const unnestTableSchema = yield (0, meerkat_core_1.getUnnestTableSchema)({
|
|
41
|
-
baseTableSchema:
|
|
68
|
+
baseTableSchema: schemaWithOverrides,
|
|
42
69
|
resolutionConfig,
|
|
43
70
|
contextParams,
|
|
44
71
|
cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
|
|
@@ -52,13 +79,22 @@ const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolut
|
|
|
52
79
|
cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
|
|
53
80
|
});
|
|
54
81
|
// Re-aggregate to reverse the unnest
|
|
55
|
-
const
|
|
82
|
+
const aggregatedTableSchema = yield (0, meerkat_core_1.getAggregatedSql)({
|
|
56
83
|
resolvedTableSchema,
|
|
57
84
|
resolutionConfig,
|
|
58
85
|
contextParams,
|
|
59
86
|
cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
|
|
60
87
|
});
|
|
61
|
-
|
|
88
|
+
// Apply aliases and generate final SQL
|
|
89
|
+
const sqlWithAliases = yield (0, meerkat_core_1.applyAliases)({
|
|
90
|
+
aggregatedTableSchema,
|
|
91
|
+
originalTableSchemas: tableSchemas,
|
|
92
|
+
resolutionConfig,
|
|
93
|
+
contextParams,
|
|
94
|
+
cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
|
|
95
|
+
});
|
|
96
|
+
// Wrap with row_id ordering and exclusion
|
|
97
|
+
return (0, meerkat_core_1.wrapWithRowIdOrderingAndExclusion)(sqlWithAliases, meerkat_core_1.ROW_ID_DIMENSION_NAME);
|
|
62
98
|
});
|
|
63
99
|
exports.cubeQueryToSQLWithResolution = cubeQueryToSQLWithResolution;
|
|
64
100
|
//# sourceMappingURL=browser-cube-to-sql-with-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-cube-to-sql-with-resolution.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"browser-cube-to-sql-with-resolution.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution.ts"],"names":[],"mappings":"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"}
|