From 2a2b2568ce564b28baef78d58dc2162c0756c0a6 Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Tue, 18 Aug 2020 21:59:20 -0700 Subject: [PATCH] fix: Check partitionGranularity requires timeDimensionReference for `originalSql` --- .../compiler/CubeValidator.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/cubejs-schema-compiler/compiler/CubeValidator.js b/packages/cubejs-schema-compiler/compiler/CubeValidator.js index ed3832adc89e2..a5ac1f62be468 100644 --- a/packages/cubejs-schema-compiler/compiler/CubeValidator.js +++ b/packages/cubejs-schema-compiler/compiler/CubeValidator.js @@ -63,7 +63,7 @@ const BaseMeasure = { meta: Joi.any() }; -const BasePreAggregation = { +const BasePreAggregationWithoutPartitionGranularity = { refreshKey: Joi.alternatives().try( Joi.object().keys({ sql: Joi.func().required() @@ -76,7 +76,6 @@ const BasePreAggregation = { ), useOriginalSqlPreAggregations: Joi.boolean(), external: Joi.boolean(), - partitionGranularity: Joi.any().valid('hour', 'day', 'week', 'month', 'year'), scheduledRefresh: Joi.boolean(), refreshRangeStart: { sql: Joi.func().required() @@ -94,6 +93,11 @@ const BasePreAggregation = { )), }; +const BasePreAggregation = { + ...BasePreAggregationWithoutPartitionGranularity, + partitionGranularity: Joi.any().valid('hour', 'day', 'week', 'month', 'year'), +}; + const cubeSchema = Joi.object().keys({ name: identifier, sql: Joi.func().required(), @@ -190,7 +194,11 @@ const cubeSchema = Joi.object().keys({ })), Joi.object().keys(Object.assign({}, BasePreAggregation, { type: Joi.any().valid('originalSql').required(), - timeDimensionReference: Joi.func() + timeDimensionReference: Joi.func().required(), + partitionGranularity: BasePreAggregation.partitionGranularity.required(), + })), + Joi.object().keys(Object.assign({}, BasePreAggregationWithoutPartitionGranularity, { + type: Joi.any().valid('originalSql').required(), })), Joi.object().keys(Object.assign({}, BasePreAggregation, { type: Joi.any().valid('rollup').required(),