Skip to content

Commit 71f33d6

Browse files
committed
use map
1 parent 7ce6e8d commit 71f33d6

File tree

1 file changed

+33
-20
lines changed

1 file changed

+33
-20
lines changed

meerkat-core/src/resolution/resolution.ts

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,39 @@ export const createBaseTableSchema = (
2424
resolutionConfig: ResolutionConfig,
2525
measures: Member[],
2626
dimensions?: Member[]
27-
) => ({
28-
name: BASE_DATA_SOURCE_NAME,
29-
sql: baseSql,
30-
measures: [],
31-
dimensions: [...measures, ...(dimensions || [])].map((member) => {
32-
const schema = findInSchemas(member, tableSchemas);
33-
if (schema) {
34-
return constructBaseDimension(member, schema);
35-
} else {
36-
throw new Error(`Not found: ${member}`);
37-
}
38-
}),
39-
joins: resolutionConfig.columnConfigs.map((config) => ({
40-
sql: `${BASE_DATA_SOURCE_NAME}.${constructAlias(
41-
config.name,
42-
findInSchemas(config.name, tableSchemas)?.alias,
43-
true
44-
)} = ${memberKeyToSafeKey(config.name)}.${config.joinColumn}`,
45-
})),
46-
});
27+
) => {
28+
const schemaByName: Record<string, Measure | Dimension> = {};
29+
tableSchemas.forEach((tableSchema) => {
30+
tableSchema.dimensions.forEach((dimension) => {
31+
schemaByName[getNamespacedKey(tableSchema.name, dimension.name)] =
32+
dimension;
33+
});
34+
tableSchema.measures.forEach((measure) => {
35+
schemaByName[getNamespacedKey(tableSchema.name, measure.name)] = measure;
36+
});
37+
});
38+
39+
return {
40+
name: BASE_DATA_SOURCE_NAME,
41+
sql: baseSql,
42+
measures: [],
43+
dimensions: [...measures, ...(dimensions || [])].map((member) => {
44+
const schema = schemaByName[member];
45+
if (schema) {
46+
return constructBaseDimension(member, schema);
47+
} else {
48+
throw new Error(`Not found: ${member}`);
49+
}
50+
}),
51+
joins: resolutionConfig.columnConfigs.map((config) => ({
52+
sql: `${BASE_DATA_SOURCE_NAME}.${constructAlias(
53+
config.name,
54+
schemaByName[config.name]?.alias,
55+
true
56+
)} = ${memberKeyToSafeKey(config.name)}.${config.joinColumn}`,
57+
})),
58+
};
59+
};
4760

4861
export const generateResolutionSchemas = (
4962
config: ResolutionConfig,

0 commit comments

Comments
 (0)