Skip to content

Commit 039f0e1

Browse files
authored
fix: Merge measure/dimension's spec for formats (#10007)
Let's merge these types for now, because Cube still allows us to define all formats for all kinds of attributes.
1 parent 5453581 commit 039f0e1

File tree

11 files changed

+66
-110
lines changed

11 files changed

+66
-110
lines changed

packages/cubejs-api-gateway/openspec.yml

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ components:
144144
meta:
145145
type: "object"
146146
format:
147-
$ref: "#/components/schemas/V1CubeMetaDimensionFormat"
147+
$ref: "#/components/schemas/V1CubeMetaFormat"
148148
V1CubeMetaMeasure:
149149
type: "object"
150150
required:
@@ -166,7 +166,7 @@ components:
166166
meta:
167167
type: "object"
168168
format:
169-
$ref: "#/components/schemas/V1CubeMetaMeasureFormat"
169+
$ref: "#/components/schemas/V1CubeMetaFormat"
170170
aliasMember:
171171
description: "When measure is defined in View, it keeps the original path: Cube.measure"
172172
type: "string"
@@ -267,24 +267,19 @@ components:
267267
enum:
268268
- "cube"
269269
- "view"
270-
V1CubeMetaMeasureFormat:
270+
V1CubeMetaSimpleFormat:
271271
type: "string"
272-
description: Format of measure
272+
description: Simple format
273273
enum:
274274
- "percent"
275275
- "currency"
276-
V1CubeMetaDimensionSimpleFormat:
277-
type: "string"
278-
description: Simple format of dimension
279-
enum:
276+
- "number"
280277
- "imageUrl"
281278
- "id"
282279
- "link"
283-
- "percent"
284-
- "currency"
285-
V1CubeMetaDimensionLinkFormat:
280+
V1CubeMetaLinkFormat:
286281
type: "object"
287-
description: Link format for dimension with label and type
282+
description: Link format with label and type
288283
properties:
289284
label:
290285
type: "string"
@@ -296,10 +291,10 @@ components:
296291
required:
297292
- label
298293
- type
299-
V1CubeMetaDimensionFormat:
294+
V1CubeMetaFormat:
300295
oneOf:
301-
- $ref: "#/components/schemas/V1CubeMetaDimensionSimpleFormat"
302-
- $ref: "#/components/schemas/V1CubeMetaDimensionLinkFormat"
296+
- $ref: "#/components/schemas/V1CubeMetaSimpleFormat"
297+
- $ref: "#/components/schemas/V1CubeMetaLinkFormat"
303298
description: Format of dimension - can be either a simple string format or an object with link configuration
304299
V1MetaResponse:
305300
type: "object"

rust/cubesql/cubeclient/.openapi-generator/FILES

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ src/lib.rs
33
src/models/mod.rs
44
src/models/v1_cube_meta.rs
55
src/models/v1_cube_meta_dimension.rs
6-
src/models/v1_cube_meta_dimension_format.rs
76
src/models/v1_cube_meta_dimension_granularity.rs
8-
src/models/v1_cube_meta_dimension_link_format.rs
9-
src/models/v1_cube_meta_dimension_simple_format.rs
107
src/models/v1_cube_meta_folder.rs
8+
src/models/v1_cube_meta_format.rs
119
src/models/v1_cube_meta_hierarchy.rs
1210
src/models/v1_cube_meta_join.rs
11+
src/models/v1_cube_meta_link_format.rs
1312
src/models/v1_cube_meta_measure.rs
14-
src/models/v1_cube_meta_measure_format.rs
1513
src/models/v1_cube_meta_nested_folder.rs
1614
src/models/v1_cube_meta_segment.rs
15+
src/models/v1_cube_meta_simple_format.rs
1716
src/models/v1_cube_meta_type.rs
1817
src/models/v1_error.rs
1918
src/models/v1_load_request.rs

rust/cubesql/cubeclient/src/models/mod.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,32 @@ pub mod v1_cube_meta;
22
pub use self::v1_cube_meta::V1CubeMeta;
33
pub mod v1_cube_meta_dimension;
44
pub use self::v1_cube_meta_dimension::V1CubeMetaDimension;
5-
pub mod v1_cube_meta_dimension_format;
6-
pub use self::v1_cube_meta_dimension_format::V1CubeMetaDimensionFormat;
75
pub mod v1_cube_meta_dimension_granularity;
86
pub use self::v1_cube_meta_dimension_granularity::V1CubeMetaDimensionGranularity;
9-
pub mod v1_cube_meta_dimension_link_format;
10-
pub use self::v1_cube_meta_dimension_link_format::V1CubeMetaDimensionLinkFormat;
11-
// problem with code-gen, let's rename it as re-export
12-
pub use self::v1_cube_meta_dimension_link_format::Type as V1CubeMetaDimensionLinkFormatType;
13-
pub mod v1_cube_meta_dimension_simple_format;
14-
pub use self::v1_cube_meta_dimension_simple_format::V1CubeMetaDimensionSimpleFormat;
157
pub mod v1_cube_meta_folder;
168
pub use self::v1_cube_meta_folder::V1CubeMetaFolder;
9+
pub mod v1_cube_meta_format;
10+
pub use self::v1_cube_meta_format::V1CubeMetaFormat;
1711
pub mod v1_cube_meta_hierarchy;
1812
pub use self::v1_cube_meta_hierarchy::V1CubeMetaHierarchy;
1913
pub mod v1_cube_meta_join;
2014
pub use self::v1_cube_meta_join::V1CubeMetaJoin;
15+
pub mod v1_cube_meta_link_format;
16+
pub use self::v1_cube_meta_link_format::V1CubeMetaLinkFormat;
17+
// problem with code-gen, let's rename it as re-export
18+
pub use self::v1_cube_meta_link_format::Type as V1CubeMetaLinkFormatType;
2119
pub mod v1_cube_meta_measure;
2220
pub use self::v1_cube_meta_measure::V1CubeMetaMeasure;
23-
pub mod v1_cube_meta_measure_format;
24-
pub use self::v1_cube_meta_measure_format::V1CubeMetaMeasureFormat;
2521
pub mod v1_cube_meta_nested_folder;
2622
pub use self::v1_cube_meta_nested_folder::{V1CubeMetaNestedFolder, V1CubeMetaNestedFolderMember};
2723
pub mod v1_cube_meta_segment;
2824
pub use self::v1_cube_meta_segment::V1CubeMetaSegment;
25+
pub mod v1_cube_meta_simple_format;
26+
pub use self::v1_cube_meta_simple_format::V1CubeMetaSimpleFormat;
2927
pub mod v1_cube_meta_type;
3028
pub use self::v1_cube_meta_type::V1CubeMetaType;
3129
pub mod v1_error;
3230
pub use self::v1_error::V1Error;
33-
pub mod v1_load_continue_wait;
34-
pub use self::v1_load_continue_wait::V1LoadContinueWait;
3531
pub mod v1_load_request;
3632
pub use self::v1_load_request::V1LoadRequest;
3733
pub mod v1_load_request_query;
@@ -50,6 +46,8 @@ pub mod v1_load_request_query_time_dimension;
5046
pub use self::v1_load_request_query_time_dimension::V1LoadRequestQueryTimeDimension;
5147
pub mod v1_load_request_query_time_dimension_date_range_filter;
5248
pub use self::v1_load_request_query_time_dimension_date_range_filter::V1LoadRequestQueryTimeDimensionDateRangeFilter;
49+
pub mod v1_load_continue_wait;
50+
pub use self::v1_load_continue_wait::V1LoadContinueWait;
5351
pub mod v1_load_response;
5452
pub use self::v1_load_response::V1LoadResponse;
5553
pub mod v1_load_result;

rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pub struct V1CubeMetaDimension {
3131
#[serde(rename = "meta", skip_serializing_if = "Option::is_none")]
3232
pub meta: Option<serde_json::Value>,
3333
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
34-
pub format: Option<Box<models::V1CubeMetaDimensionFormat>>,
34+
pub format: Option<Box<models::V1CubeMetaFormat>>,
3535
}
3636

3737
impl V1CubeMetaDimension {

rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_format.rs renamed to rust/cubesql/cubeclient/src/models/v1_cube_meta_format.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@
1111
use crate::models;
1212
use serde::{Deserialize, Serialize};
1313

14-
/// V1CubeMetaDimensionFormat : Format of dimension - can be either a simple string format or an object with link configuration
14+
/// V1CubeMetaFormat : Format of dimension - can be either a simple string format or an object with link configuration
1515
/// Format of dimension - can be either a simple string format or an object with link configuration
16-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash, PartialOrd, Ord)]
16+
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1717
#[serde(untagged)]
18-
pub enum V1CubeMetaDimensionFormat {
19-
V1CubeMetaDimensionSimpleFormat(models::V1CubeMetaDimensionSimpleFormat),
20-
V1CubeMetaDimensionLinkFormat(Box<models::V1CubeMetaDimensionLinkFormat>),
18+
pub enum V1CubeMetaFormat {
19+
V1CubeMetaSimpleFormat(models::V1CubeMetaSimpleFormat),
20+
V1CubeMetaLinkFormat(Box<models::V1CubeMetaLinkFormat>),
2121
}
2222

23-
impl Default for V1CubeMetaDimensionFormat {
23+
impl Default for V1CubeMetaFormat {
2424
fn default() -> Self {
25-
Self::V1CubeMetaDimensionSimpleFormat(Default::default())
25+
Self::V1CubeMetaSimpleFormat(Default::default())
2626
}
2727
}
2828
/// Type of the format (must be 'link')

rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_link_format.rs renamed to rust/cubesql/cubeclient/src/models/v1_cube_meta_link_format.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
use crate::models;
1212
use serde::{Deserialize, Serialize};
1313

14-
/// V1CubeMetaDimensionLinkFormat : Link format for dimension with label and type
15-
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Eq, Hash, PartialOrd, Ord)]
16-
pub struct V1CubeMetaDimensionLinkFormat {
14+
/// V1CubeMetaLinkFormat : Link format with label and type
15+
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16+
pub struct V1CubeMetaLinkFormat {
1717
/// Label for the link
1818
#[serde(rename = "label")]
1919
pub label: String,
@@ -22,10 +22,10 @@ pub struct V1CubeMetaDimensionLinkFormat {
2222
pub r#type: Type,
2323
}
2424

25-
impl V1CubeMetaDimensionLinkFormat {
26-
/// Link format for dimension with label and type
27-
pub fn new(label: String, r#type: Type) -> V1CubeMetaDimensionLinkFormat {
28-
V1CubeMetaDimensionLinkFormat { label, r#type }
25+
impl V1CubeMetaLinkFormat {
26+
/// Link format with label and type
27+
pub fn new(label: String, r#type: Type) -> V1CubeMetaLinkFormat {
28+
V1CubeMetaLinkFormat { label, r#type }
2929
}
3030
}
3131
/// Type of the format (must be 'link')

rust/cubesql/cubeclient/src/models/v1_cube_meta_measure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub struct V1CubeMetaMeasure {
2828
#[serde(rename = "meta", skip_serializing_if = "Option::is_none")]
2929
pub meta: Option<serde_json::Value>,
3030
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
31-
pub format: Option<models::V1CubeMetaMeasureFormat>,
31+
pub format: Option<Box<models::V1CubeMetaFormat>>,
3232
/// When measure is defined in View, it keeps the original path: Cube.measure
3333
#[serde(rename = "aliasMember", skip_serializing_if = "Option::is_none")]
3434
pub alias_member: Option<String>,

rust/cubesql/cubeclient/src/models/v1_cube_meta_measure_format.rs

Lines changed: 0 additions & 37 deletions
This file was deleted.

rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_simple_format.rs renamed to rust/cubesql/cubeclient/src/models/v1_cube_meta_simple_format.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,39 @@
1111
use crate::models;
1212
use serde::{Deserialize, Serialize};
1313

14-
/// V1CubeMetaDimensionSimpleFormat : Simple format of dimension
15-
/// Simple format of dimension
14+
/// V1CubeMetaSimpleFormat : Simple format
15+
/// Simple format
1616
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
17-
pub enum V1CubeMetaDimensionSimpleFormat {
17+
pub enum V1CubeMetaSimpleFormat {
18+
#[serde(rename = "percent")]
19+
Percent,
20+
#[serde(rename = "currency")]
21+
Currency,
22+
#[serde(rename = "number")]
23+
Number,
1824
#[serde(rename = "imageUrl")]
1925
ImageUrl,
2026
#[serde(rename = "id")]
2127
Id,
2228
#[serde(rename = "link")]
2329
Link,
24-
#[serde(rename = "percent")]
25-
Percent,
26-
#[serde(rename = "currency")]
27-
Currency,
2830
}
2931

30-
impl std::fmt::Display for V1CubeMetaDimensionSimpleFormat {
32+
impl std::fmt::Display for V1CubeMetaSimpleFormat {
3133
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
3234
match self {
35+
Self::Percent => write!(f, "percent"),
36+
Self::Currency => write!(f, "currency"),
37+
Self::Number => write!(f, "number"),
3338
Self::ImageUrl => write!(f, "imageUrl"),
3439
Self::Id => write!(f, "id"),
3540
Self::Link => write!(f, "link"),
36-
Self::Percent => write!(f, "percent"),
37-
Self::Currency => write!(f, "currency"),
3841
}
3942
}
4043
}
4144

42-
impl Default for V1CubeMetaDimensionSimpleFormat {
43-
fn default() -> V1CubeMetaDimensionSimpleFormat {
44-
Self::ImageUrl
45+
impl Default for V1CubeMetaSimpleFormat {
46+
fn default() -> V1CubeMetaSimpleFormat {
47+
Self::Percent
4548
}
4649
}

rust/cubesql/cubeclient/tests/deserialization.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,11 @@ fn test_deserialize_dimension_link_format() {
139139

140140
assert_eq!(
141141
dimension.format,
142-
Some(Box::new(
143-
V1CubeMetaDimensionFormat::V1CubeMetaDimensionLinkFormat(Box::new(
144-
V1CubeMetaDimensionLinkFormat {
145-
label: "View Details".to_string(),
146-
r#type: V1CubeMetaDimensionLinkFormatType::Link,
147-
}
148-
))
149-
))
142+
Some(Box::new(V1CubeMetaFormat::V1CubeMetaLinkFormat(Box::new(
143+
V1CubeMetaLinkFormat {
144+
label: "View Details".to_string(),
145+
r#type: V1CubeMetaLinkFormatType::Link,
146+
}
147+
))))
150148
);
151149
}

0 commit comments

Comments
 (0)