Skip to content

Commit 1c18e90

Browse files
committed
restructure validation schemas (for hierarchies and folders)
1 parent e0179c5 commit 1c18e90

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

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

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,12 @@ const RolePolicySchema = Joi.object().keys({
734734
* and update CubePropContextTranspiler.transpiledFieldsPatterns
735735
**************************** */
736736

737+
const hierarchySchema = Joi.object().pattern(identifierRegex, Joi.object().keys({
738+
title: Joi.string(),
739+
public: Joi.boolean().strict(),
740+
levels: Joi.func()
741+
}));
742+
737743
const baseSchema = {
738744
name: identifier,
739745
refreshKey: CubeRefreshKeySchema,
@@ -760,26 +766,13 @@ const baseSchema = {
760766
dimensions: DimensionsSchema,
761767
segments: SegmentsSchema,
762768
preAggregations: PreAggregationsAlternatives,
763-
folders: Joi.array().items(Joi.object().keys({
764-
name: Joi.string().required(),
765-
includes: Joi.alternatives([
766-
Joi.string().valid('*'),
767-
Joi.array().items(Joi.string().required())
768-
]).required(),
769-
})),
770769
accessPolicy: Joi.array().items(RolePolicySchema.required()),
770+
hierarchies: hierarchySchema,
771771
};
772772

773-
const hierarchySchema = Joi.object().pattern(identifierRegex, Joi.object().keys({
774-
title: Joi.string(),
775-
public: Joi.boolean().strict(),
776-
levels: Joi.func()
777-
}));
778-
779773
const cubeSchema = inherit(baseSchema, {
780774
sql: Joi.func(),
781775
sqlTable: Joi.func(),
782-
hierarchies: hierarchySchema,
783776
}).xor('sql', 'sqlTable').messages({
784777
'object.xor': 'You must use either sql or sqlTable within a model, but not both'
785778
});
@@ -811,8 +804,13 @@ const viewSchema = inherit(baseSchema, {
811804
'object.oxor': 'Using split together with prefix is not supported'
812805
})
813806
),
814-
accessPolicy: Joi.array().items(RolePolicySchema.required()),
815-
hierarchies: hierarchySchema,
807+
folders: Joi.array().items(Joi.object().keys({
808+
name: Joi.string().required(),
809+
includes: Joi.alternatives([
810+
Joi.string().valid('*'),
811+
Joi.array().items(Joi.string().required())
812+
]).required(),
813+
})),
816814
});
817815

818816
function formatErrorMessageFromDetails(explain, d) {

0 commit comments

Comments
 (0)