Skip to content

Commit baabd41

Browse files
authored
feat(schema-compiler): add dimension primaryKey property to transform result (#7443)
1 parent 05cdd50 commit baabd41

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

packages/cubejs-schema-compiler/src/compiler/CubeToMetaTransformer.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class CubeToMetaTransformer {
4848
R.map((nameToMetric) => ({
4949
...this.measureConfig(cube.name, cubeTitle, nameToMetric),
5050
isVisible: isCubeVisible ? this.isVisible(nameToMetric[1], true) : false,
51-
public: isCubeVisible ? this.isVisible(nameToMetric[1], true) : false
51+
public: isCubeVisible ? this.isVisible(nameToMetric[1], true) : false,
5252
})),
5353
R.toPairs
5454
)(cube.measures || {}),
@@ -60,11 +60,18 @@ export class CubeToMetaTransformer {
6060
description: nameToDimension[1].description,
6161
shortTitle: this.title(cubeTitle, nameToDimension, true),
6262
suggestFilterValues:
63-
nameToDimension[1].suggestFilterValues == null ? true : nameToDimension[1].suggestFilterValues,
63+
nameToDimension[1].suggestFilterValues == null
64+
? true
65+
: nameToDimension[1].suggestFilterValues,
6466
format: nameToDimension[1].format,
6567
meta: nameToDimension[1].meta,
66-
isVisible: isCubeVisible ? this.isVisible(nameToDimension[1], !nameToDimension[1].primaryKey) : false,
67-
public: isCubeVisible ? this.isVisible(nameToDimension[1], !nameToDimension[1].primaryKey) : false,
68+
isVisible: isCubeVisible
69+
? this.isVisible(nameToDimension[1], !nameToDimension[1].primaryKey)
70+
: false,
71+
public: isCubeVisible
72+
? this.isVisible(nameToDimension[1], !nameToDimension[1].primaryKey)
73+
: false,
74+
primaryKey: !!nameToDimension[1].primaryKey,
6875
})),
6976
R.toPairs
7077
)(cube.dimensions || {}),
@@ -79,8 +86,8 @@ export class CubeToMetaTransformer {
7986
public: isCubeVisible ? this.isVisible(nameToSegment[1], true) : false,
8087
})),
8188
R.toPairs
82-
)(cube.segments || {})
83-
}
89+
)(cube.segments || {}),
90+
},
8491
};
8592
}
8693

packages/cubejs-schema-compiler/test/unit/schema.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,25 @@ describe('Schema Testing', () => {
249249
});
250250
});
251251

252+
it('dimensions', async () => {
253+
const { compiler, metaTransformer } = prepareCompiler([
254+
createCubeSchema({
255+
name: 'CubeA',
256+
publicly: false,
257+
}),
258+
]);
259+
await compiler.compile();
260+
261+
const { dimensions } = metaTransformer.cubes[0].config;
262+
263+
expect(dimensions).toBeDefined();
264+
expect(dimensions.length).toBeGreaterThan(0);
265+
expect(dimensions.every((dimension) => dimension.primaryKey)).toBeDefined();
266+
expect(dimensions.every((dimension) => typeof dimension.primaryKey === 'boolean')).toBe(true);
267+
expect(dimensions.find((dimension) => dimension.name === 'CubeA.id').primaryKey).toBe(true);
268+
expect(dimensions.find((dimension) => dimension.name === 'CubeA.type').primaryKey).toBe(false);
269+
});
270+
252271
it('join types', async () => {
253272
const { compiler, cubeEvaluator } = prepareCompiler([
254273
createCubeSchema({

0 commit comments

Comments
 (0)