Skip to content

Commit 339399d

Browse files
committed
refactor(schema-compiler): More types in CubeEvaluator
1 parent 452633c commit 339399d

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

packages/cubejs-schema-compiler/src/compiler/CubeEvaluator.ts

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,40 @@ export type PreAggregationFilters = {
6565
scheduled?: boolean,
6666
};
6767

68+
type PreAggregationDefinition = {
69+
allowNonStrictDateRangeMatch?: boolean,
70+
timeDimensionReference?: () => { toString(): string },
71+
granularity: string,
72+
timeDimensionReferences: Array<{ dimension: () => { toString(): string }, granularity: string }>,
73+
dimensionReferences: () => Array<{ toString(): string }>,
74+
segmentReferences: () => Array<{ toString(): string }>,
75+
measureReferences: () => Array<{ toString(): string }>,
76+
rollupReferences: () => Array<{ toString(): string }>,
77+
};
78+
79+
type PreAggregationTimeDimensionReference = {
80+
dimension: string,
81+
granularity: string,
82+
};
83+
84+
type PreAggregationReferences = {
85+
allowNonStrictDateRangeMatch?: boolean,
86+
dimensions: Array<string>,
87+
measures: Array<string>,
88+
timeDimensions: Array<PreAggregationTimeDimensionReference>,
89+
rollups: Array<string>,
90+
};
91+
92+
type PreAggregationInfo = {
93+
id: string,
94+
preAggregationName: string,
95+
preAggregation: unknown,
96+
cube: string,
97+
references: PreAggregationReferences,
98+
refreshKey: unknown,
99+
indexesReferences: unknown,
100+
};
101+
68102
export class CubeEvaluator extends CubeSymbols {
69103
public evaluatedCubes: Record<string, any> = {};
70104

@@ -492,7 +526,7 @@ export class CubeEvaluator extends CubeSymbols {
492526
/**
493527
* Returns pre-aggregations filtered by the specified selector.
494528
*/
495-
public preAggregations(filter: PreAggregationFilters) {
529+
public preAggregations(filter: PreAggregationFilters): Array<PreAggregationInfo> {
496530
const { scheduled, dataSources, cubes, preAggregationIds } = filter || {};
497531
const idFactory = ({ cube, preAggregationName }) => `${cube}.${preAggregationName}`;
498532

@@ -510,7 +544,7 @@ export class CubeEvaluator extends CubeSymbols {
510544
)
511545
)
512546
))
513-
.map(cube => {
547+
.flatMap(cube => {
514548
const preAggregations = this.preAggregationsForCube(cube);
515549
return Object.keys(preAggregations)
516550
.filter(
@@ -547,11 +581,10 @@ export class CubeEvaluator extends CubeSymbols {
547581
}, {})
548582
};
549583
});
550-
})
551-
.reduce((a, b) => a.concat(b), []);
584+
});
552585
}
553586

554-
public scheduledPreAggregations() {
587+
public scheduledPreAggregations(): Array<PreAggregationInfo> {
555588
return this.preAggregations({ scheduled: true });
556589
}
557590

@@ -704,8 +737,8 @@ export class CubeEvaluator extends CubeSymbols {
704737
return { cubeReferencesUsed, pathReferencesUsed, evaluatedSql };
705738
}
706739

707-
protected evaluatePreAggregationReferences(cube, aggregation) {
708-
const timeDimensions: any = [];
740+
protected evaluatePreAggregationReferences(cube: string, aggregation: PreAggregationDefinition): PreAggregationReferences {
741+
const timeDimensions: Array<PreAggregationTimeDimensionReference> = [];
709742

710743
if (aggregation.timeDimensionReference) {
711744
timeDimensions.push({

0 commit comments

Comments
 (0)