Skip to content

Commit 47e8c20

Browse files
committed
introduce alias in CubeValidator
and cover it with schema tests
1 parent 0ab7e8b commit 47e8c20

File tree

4 files changed

+120
-1
lines changed

4 files changed

+120
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,8 @@ const baseSchema = {
818818
'belongsTo', 'belongs_to', 'many_to_one', 'manyToOne',
819819
'hasMany', 'has_many', 'one_to_many', 'oneToMany',
820820
'hasOne', 'has_one', 'one_to_one', 'oneToOne'
821-
).required()
821+
).required(),
822+
alias: identifier,
822823
}))
823824
]),
824825
measures: MeasuresSchema,

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,33 @@ Array [
17291729
]
17301730
`;
17311731

1732+
exports[`Schema Testing Joins join aliases (joins as array) 1`] = `
1733+
Array [
1734+
Object {
1735+
"alias": "CubeB_alias1",
1736+
"name": "CubeB",
1737+
"relationship": "hasOne",
1738+
"sql": [Function],
1739+
},
1740+
Object {
1741+
"alias": "CubeB_alias2",
1742+
"name": "CubeB",
1743+
"relationship": "hasOne",
1744+
"sql": [Function],
1745+
},
1746+
Object {
1747+
"name": "CubeC",
1748+
"relationship": "hasMany",
1749+
"sql": [Function],
1750+
},
1751+
Object {
1752+
"name": "CubeD",
1753+
"relationship": "belongsTo",
1754+
"sql": [Function],
1755+
},
1756+
]
1757+
`;
1758+
17321759
exports[`Schema Testing Views allows to override \`title\`, \`description\`, \`meta\`, and \`format\` on includes members 1`] = `
17331760
Object {
17341761
"accessPolicy": undefined,

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,50 @@ describe('Schema Testing', () => {
487487

488488
expect(cubeEvaluator.cubeFromPath('CubeA').joins).toMatchSnapshot();
489489
});
490+
491+
it('join aliases (joins as array)', async () => {
492+
const { compiler, cubeEvaluator } = prepareJsCompiler([
493+
createCubeSchema({
494+
name: 'CubeA',
495+
joins: `[
496+
{
497+
name: 'CubeB',
498+
sql: \`SQL ON clause1\`,
499+
relationship: 'one_to_one',
500+
alias: 'CubeB_alias1'
501+
},
502+
{
503+
name: 'CubeB',
504+
sql: \`SQL ON clause2\`,
505+
relationship: 'one_to_one',
506+
alias: 'CubeB_alias2'
507+
},
508+
{
509+
name: 'CubeC',
510+
sql: \`SQL ON clause\`,
511+
relationship: 'one_to_many'
512+
},
513+
{
514+
name: 'CubeD',
515+
sql: \`SQL ON clause\`,
516+
relationship: 'many_to_one'
517+
},
518+
]`
519+
}),
520+
createCubeSchema({
521+
name: 'CubeB',
522+
}),
523+
createCubeSchema({
524+
name: 'CubeC',
525+
}),
526+
createCubeSchema({
527+
name: 'CubeD',
528+
}),
529+
]);
530+
await compiler.compile();
531+
532+
expect(cubeEvaluator.cubeFromPath('CubeA').joins).toMatchSnapshot();
533+
});
490534
});
491535

492536
describe('Access Policies', () => {

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

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,4 +629,51 @@ describe('Yaml Schema Testing', () => {
629629

630630
await compiler.compile();
631631
});
632+
633+
it('joins with aliases - success', async () => {
634+
const { compiler } = prepareYamlCompiler(
635+
`
636+
cubes:
637+
- name: CubeA
638+
sql: "select * from tbl"
639+
joins:
640+
- name: CubeB
641+
sql: SQL ON clause1
642+
relationship: one_to_one
643+
alias: CubeB_alias1
644+
645+
- name: CubeB
646+
sql: SQL ON clause2
647+
relationship: one_to_one
648+
alias: CubeB_alias2
649+
650+
- name: CubeC
651+
sql: SQL ON clause
652+
relationship: one_to_many
653+
654+
- name: CubeD
655+
sql: SQL ON clause
656+
relationship: many_to_one
657+
dimensions:
658+
- name: id
659+
sql: id
660+
type: number
661+
primary_key: true
662+
- name: created_at
663+
sql: created_at
664+
type: time
665+
measures:
666+
- name: count
667+
type: count
668+
- name: CubeB
669+
sql: "select * from tbl"
670+
- name: CubeC
671+
sql: "select * from tbl"
672+
- name: CubeD
673+
sql: "select * from tbl"
674+
`
675+
);
676+
677+
await compiler.compile();
678+
});
632679
});

0 commit comments

Comments
 (0)