Skip to content

Commit a91cbc8

Browse files
committed
feat: Expose format field for measures/dimensions in meta
1 parent 8398538 commit a91cbc8

File tree

9 files changed

+146
-4
lines changed

9 files changed

+146
-4
lines changed

packages/cubejs-api-gateway/openspec.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ components:
143143
$ref: "#/components/schemas/V1CubeMetaDimensionGranularity"
144144
meta:
145145
type: "object"
146+
format:
147+
$ref: "#/components/schemas/V1CubeMetaDimensionFormat"
146148
V1CubeMetaMeasure:
147149
type: "object"
148150
required:
@@ -163,6 +165,8 @@ components:
163165
type: "string"
164166
meta:
165167
type: "object"
168+
format:
169+
$ref: "#/components/schemas/V1CubeMetaMeasureFormat"
166170
aliasMember:
167171
description: "When measure is defined in View, it keeps the original path: Cube.measure"
168172
type: "string"
@@ -263,6 +267,21 @@ components:
263267
enum:
264268
- "cube"
265269
- "view"
270+
V1CubeMetaMeasureFormat:
271+
type: "string"
272+
description: Format of measure
273+
enum:
274+
- "percent"
275+
- "currency"
276+
V1CubeMetaDimensionFormat:
277+
type: "string"
278+
description: Format of dimension
279+
enum:
280+
- "imageUrl"
281+
- "id"
282+
- "link"
283+
- "percent"
284+
- "currency"
266285
V1MetaResponse:
267286
type: "object"
268287
properties:

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ 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
67
src/models/v1_cube_meta_dimension_granularity.rs
78
src/models/v1_cube_meta_folder.rs
89
src/models/v1_cube_meta_hierarchy.rs
910
src/models/v1_cube_meta_join.rs
1011
src/models/v1_cube_meta_measure.rs
12+
src/models/v1_cube_meta_measure_format.rs
1113
src/models/v1_cube_meta_nested_folder.rs
1214
src/models/v1_cube_meta_segment.rs
1315
src/models/v1_cube_meta_type.rs

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ 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;
57
pub mod v1_cube_meta_dimension_granularity;
68
pub use self::v1_cube_meta_dimension_granularity::V1CubeMetaDimensionGranularity;
79
pub mod v1_cube_meta_folder;
@@ -12,9 +14,10 @@ pub mod v1_cube_meta_join;
1214
pub use self::v1_cube_meta_join::V1CubeMetaJoin;
1315
pub mod v1_cube_meta_measure;
1416
pub use self::v1_cube_meta_measure::V1CubeMetaMeasure;
17+
pub mod v1_cube_meta_measure_format;
18+
pub use self::v1_cube_meta_measure_format::V1CubeMetaMeasureFormat;
1519
pub mod v1_cube_meta_nested_folder;
16-
pub use self::v1_cube_meta_nested_folder::V1CubeMetaNestedFolder;
17-
pub use self::v1_cube_meta_nested_folder::V1CubeMetaNestedFolderMember;
20+
pub use self::v1_cube_meta_nested_folder::{V1CubeMetaNestedFolder, V1CubeMetaNestedFolderMember};
1821
pub mod v1_cube_meta_segment;
1922
pub use self::v1_cube_meta_segment::V1CubeMetaSegment;
2023
pub mod v1_cube_meta_type;
@@ -37,6 +40,8 @@ pub mod v1_load_request_query_join_subquery;
3740
pub use self::v1_load_request_query_join_subquery::V1LoadRequestQueryJoinSubquery;
3841
pub mod v1_load_request_query_time_dimension;
3942
pub use self::v1_load_request_query_time_dimension::V1LoadRequestQueryTimeDimension;
43+
pub mod v1_load_continue_wait;
44+
pub use self::v1_load_continue_wait::V1LoadContinueWait;
4045
pub mod v1_load_response;
4146
pub use self::v1_load_response::V1LoadResponse;
4247
pub mod v1_load_result;
@@ -45,5 +50,3 @@ pub mod v1_load_result_annotation;
4550
pub use self::v1_load_result_annotation::V1LoadResultAnnotation;
4651
pub mod v1_meta_response;
4752
pub use self::v1_meta_response::V1MetaResponse;
48-
pub mod v1_load_continue_wait;
49-
pub use self::v1_load_continue_wait::V1LoadContinueWait;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ pub struct V1CubeMetaDimension {
3030
pub granularities: Option<Vec<models::V1CubeMetaDimensionGranularity>>,
3131
#[serde(rename = "meta", skip_serializing_if = "Option::is_none")]
3232
pub meta: Option<serde_json::Value>,
33+
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
34+
pub format: Option<models::V1CubeMetaDimensionFormat>,
3335
}
3436

3537
impl V1CubeMetaDimension {
@@ -43,6 +45,7 @@ impl V1CubeMetaDimension {
4345
alias_member: None,
4446
granularities: None,
4547
meta: None,
48+
format: None,
4649
}
4750
}
4851
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Cube.js
3+
*
4+
* Cube.js Swagger Schema
5+
*
6+
* The version of the OpenAPI document: 1.0.0
7+
*
8+
* Generated by: https://openapi-generator.tech
9+
*/
10+
11+
use crate::models;
12+
use serde::{Deserialize, Serialize};
13+
14+
/// V1CubeMetaDimensionFormat : Format of dimension
15+
/// Format of dimension
16+
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
17+
pub enum V1CubeMetaDimensionFormat {
18+
#[serde(rename = "imageUrl")]
19+
ImageUrl,
20+
#[serde(rename = "id")]
21+
Id,
22+
#[serde(rename = "link")]
23+
Link,
24+
#[serde(rename = "percent")]
25+
Percent,
26+
#[serde(rename = "currency")]
27+
Currency,
28+
}
29+
30+
impl std::fmt::Display for V1CubeMetaDimensionFormat {
31+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
32+
match self {
33+
Self::ImageUrl => write!(f, "imageUrl"),
34+
Self::Id => write!(f, "id"),
35+
Self::Link => write!(f, "link"),
36+
Self::Percent => write!(f, "percent"),
37+
Self::Currency => write!(f, "currency"),
38+
}
39+
}
40+
}
41+
42+
impl Default for V1CubeMetaDimensionFormat {
43+
fn default() -> V1CubeMetaDimensionFormat {
44+
Self::ImageUrl
45+
}
46+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ pub struct V1CubeMetaMeasure {
2727
pub agg_type: Option<String>,
2828
#[serde(rename = "meta", skip_serializing_if = "Option::is_none")]
2929
pub meta: Option<serde_json::Value>,
30+
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
31+
pub format: Option<models::V1CubeMetaMeasureFormat>,
3032
/// When measure is defined in View, it keeps the original path: Cube.measure
3133
#[serde(rename = "aliasMember", skip_serializing_if = "Option::is_none")]
3234
pub alias_member: Option<String>,
@@ -42,6 +44,7 @@ impl V1CubeMetaMeasure {
4244
r#type,
4345
agg_type: None,
4446
meta: None,
47+
format: None,
4548
alias_member: None,
4649
}
4750
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Cube.js
3+
*
4+
* Cube.js Swagger Schema
5+
*
6+
* The version of the OpenAPI document: 1.0.0
7+
*
8+
* Generated by: https://openapi-generator.tech
9+
*/
10+
11+
use crate::models;
12+
use serde::{Deserialize, Serialize};
13+
14+
/// V1CubeMetaMeasureFormat : Format of measure
15+
/// Format of measure
16+
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
17+
pub enum V1CubeMetaMeasureFormat {
18+
#[serde(rename = "percent")]
19+
Percent,
20+
#[serde(rename = "currency")]
21+
Currency,
22+
}
23+
24+
impl std::fmt::Display for V1CubeMetaMeasureFormat {
25+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
26+
match self {
27+
Self::Percent => write!(f, "percent"),
28+
Self::Currency => write!(f, "currency"),
29+
}
30+
}
31+
}
32+
33+
impl Default for V1CubeMetaMeasureFormat {
34+
fn default() -> V1CubeMetaMeasureFormat {
35+
Self::Percent
36+
}
37+
}

0 commit comments

Comments
 (0)