Skip to content

Commit 4643790

Browse files
authored
chore: add formatDescription to CubeMeta and related models (#10702)
1 parent c37370d commit 4643790

File tree

8 files changed

+95
-0
lines changed

8 files changed

+95
-0
lines changed

packages/cubejs-api-gateway/openspec.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ components:
145145
type: "object"
146146
format:
147147
$ref: "#/components/schemas/V1CubeMetaFormat"
148+
formatDescription:
149+
$ref: "#/components/schemas/V1CubeMetaFormatDescription"
148150
currency:
149151
type: "string"
150152
description: "ISO 4217 currency code in uppercase (3 characters, e.g. USD, EUR)"
@@ -180,6 +182,8 @@ components:
180182
type: "object"
181183
format:
182184
$ref: "#/components/schemas/V1CubeMetaFormat"
185+
formatDescription:
186+
$ref: "#/components/schemas/V1CubeMetaFormatDescription"
183187
currency:
184188
type: "string"
185189
description: "ISO 4217 currency code in uppercase (3 characters, e.g. USD, EUR)"
@@ -345,6 +349,22 @@ components:
345349
- $ref: "#/components/schemas/V1CubeMetaCustomTimeFormat"
346350
- $ref: "#/components/schemas/V1CubeMetaCustomNumericFormat"
347351
description: Format of measure or dimension - can be a simple string format, a link configuration, a custom time format, or a custom numeric format
352+
V1CubeMetaFormatDescription:
353+
type: "object"
354+
description: Resolved format description with the predefined name and d3-format specifier
355+
required:
356+
- name
357+
- specifier
358+
properties:
359+
name:
360+
type: "string"
361+
description: "Predefined format name (e.g., 'percent_2', 'currency_1') or a base name like 'number', or 'custom' for ad-hoc specifiers"
362+
specifier:
363+
type: "string"
364+
description: "d3-format specifier string (e.g., '.2f', ',.0f', '$,.2f'). See https://d3js.org/d3-format"
365+
currency:
366+
type: "string"
367+
description: "ISO 4217 currency code in uppercase (e.g. USD, EUR). Present when a currency format is used."
348368
V1MetaResponse:
349369
type: "object"
350370
properties:

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ src/models/v1_cube_meta_dimension.rs
88
src/models/v1_cube_meta_dimension_granularity.rs
99
src/models/v1_cube_meta_folder.rs
1010
src/models/v1_cube_meta_format.rs
11+
src/models/v1_cube_meta_format_description.rs
1112
src/models/v1_cube_meta_hierarchy.rs
1213
src/models/v1_cube_meta_join.rs
1314
src/models/v1_cube_meta_link_format.rs

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ pub mod v1_cube_meta_folder;
1818
pub use self::v1_cube_meta_folder::V1CubeMetaFolder;
1919
pub mod v1_cube_meta_format;
2020
pub use self::v1_cube_meta_format::V1CubeMetaFormat;
21+
pub mod v1_cube_meta_format_description;
22+
pub use self::v1_cube_meta_format_description::V1CubeMetaFormatDescription;
2123
pub mod v1_cube_meta_hierarchy;
2224
pub use self::v1_cube_meta_hierarchy::V1CubeMetaHierarchy;
2325
pub mod v1_cube_meta_join;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ pub struct V1CubeMetaDimension {
3232
pub meta: Option<serde_json::Value>,
3333
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
3434
pub format: Option<Box<models::V1CubeMetaFormat>>,
35+
#[serde(rename = "formatDescription", skip_serializing_if = "Option::is_none")]
36+
pub format_description: Option<Box<models::V1CubeMetaFormatDescription>>,
3537
#[serde(rename = "currency", skip_serializing_if = "Option::is_none")]
3638
pub currency: Option<String>,
3739
#[serde(rename = "order", skip_serializing_if = "Option::is_none")]
@@ -53,6 +55,7 @@ impl V1CubeMetaDimension {
5355
granularities: None,
5456
meta: None,
5557
format: None,
58+
format_description: None,
5659
currency: None,
5760
order: None,
5861
key: None,
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+
/// V1CubeMetaFormatDescription : Resolved format description with the predefined name and d3-format specifier
15+
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16+
pub struct V1CubeMetaFormatDescription {
17+
/// Predefined format name (e.g., 'percent_2', 'currency_1') or a base name like 'number', or 'custom' for ad-hoc specifiers
18+
#[serde(rename = "name")]
19+
pub name: String,
20+
/// d3-format specifier string (e.g., '.2f', ',.0f', '$,.2f'). See https://d3js.org/d3-format
21+
#[serde(rename = "specifier")]
22+
pub specifier: String,
23+
/// ISO 4217 currency code in uppercase (e.g. USD, EUR). Present when a currency format is used.
24+
#[serde(rename = "currency", skip_serializing_if = "Option::is_none")]
25+
pub currency: Option<String>,
26+
}
27+
28+
impl V1CubeMetaFormatDescription {
29+
/// Resolved format description with the predefined name and d3-format specifier
30+
pub fn new(name: String, specifier: String) -> V1CubeMetaFormatDescription {
31+
V1CubeMetaFormatDescription {
32+
name,
33+
specifier,
34+
currency: None,
35+
}
36+
}
37+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ pub struct V1CubeMetaMeasure {
2929
pub meta: Option<serde_json::Value>,
3030
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
3131
pub format: Option<Box<models::V1CubeMetaFormat>>,
32+
#[serde(rename = "formatDescription", skip_serializing_if = "Option::is_none")]
33+
pub format_description: Option<Box<models::V1CubeMetaFormatDescription>>,
3234
#[serde(rename = "currency", skip_serializing_if = "Option::is_none")]
3335
pub currency: Option<String>,
3436
/// When measure is defined in View, it keeps the original path: Cube.measure
@@ -47,6 +49,7 @@ impl V1CubeMetaMeasure {
4749
agg_type: None,
4850
meta: None,
4951
format: None,
52+
format_description: None,
5053
currency: None,
5154
alias_member: None,
5255
}

rust/cubesql/cubesql/benches/large_model.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ pub fn get_large_model_test_meta(dims: usize) -> Vec<V1CubeMeta> {
7474
meta: None,
7575
alias_member: None,
7676
format: None,
77+
format_description: None,
7778
currency: None,
7879
},
7980
V1CubeMetaMeasure {
@@ -86,6 +87,7 @@ pub fn get_large_model_test_meta(dims: usize) -> Vec<V1CubeMeta> {
8687
meta: None,
8788
alias_member: None,
8889
format: None,
90+
format_description: None,
8991
currency: None,
9092
},
9193
],

rust/cubesql/cubesql/src/compile/test/mod.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
109109
meta: None,
110110
alias_member: None,
111111
format: None,
112+
format_description: None,
112113
currency: None,
113114
},
114115
CubeMetaMeasure {
@@ -121,6 +122,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
121122
meta: None,
122123
alias_member: None,
123124
format: None,
125+
format_description: None,
124126
currency: None,
125127
},
126128
CubeMetaMeasure {
@@ -133,6 +135,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
133135
meta: None,
134136
alias_member: None,
135137
format: None,
138+
format_description: None,
136139
currency: None,
137140
},
138141
CubeMetaMeasure {
@@ -145,6 +148,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
145148
meta: None,
146149
alias_member: None,
147150
format: None,
151+
format_description: None,
148152
currency: None,
149153
},
150154
CubeMetaMeasure {
@@ -157,6 +161,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
157161
meta: None,
158162
alias_member: None,
159163
format: None,
164+
format_description: None,
160165
currency: None,
161166
},
162167
CubeMetaMeasure {
@@ -169,6 +174,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
169174
meta: None,
170175
alias_member: None,
171176
format: None,
177+
format_description: None,
172178
currency: None,
173179
},
174180
],
@@ -230,6 +236,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
230236
meta: None,
231237
alias_member: None,
232238
format: None,
239+
format_description: None,
233240
currency: None,
234241
},
235242
CubeMetaMeasure {
@@ -242,6 +249,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
242249
meta: None,
243250
alias_member: None,
244251
format: None,
252+
format_description: None,
245253
currency: None,
246254
},
247255
],
@@ -271,6 +279,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
271279
meta: None,
272280
alias_member: None,
273281
format: None,
282+
format_description: None,
274283
currency: None,
275284
}],
276285
segments: vec![],
@@ -303,6 +312,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
303312
meta: None,
304313
alias_member: None,
305314
format: None,
315+
format_description: None,
306316
currency: None,
307317
})
308318
.chain(
@@ -317,6 +327,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
317327
meta: None,
318328
alias_member: None,
319329
format: None,
330+
format_description: None,
320331
currency: None,
321332
},
322333
CubeMetaMeasure {
@@ -329,6 +340,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
329340
meta: None,
330341
alias_member: None,
331342
format: None,
343+
format_description: None,
332344
currency: None,
333345
},
334346
CubeMetaMeasure {
@@ -341,6 +353,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
341353
meta: None,
342354
alias_member: None,
343355
format: None,
356+
format_description: None,
344357
currency: None,
345358
},
346359
CubeMetaMeasure {
@@ -353,6 +366,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
353366
meta: None,
354367
alias_member: None,
355368
format: None,
369+
format_description: None,
356370
currency: None,
357371
},
358372
CubeMetaMeasure {
@@ -365,6 +379,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
365379
meta: None,
366380
alias_member: None,
367381
format: None,
382+
format_description: None,
368383
currency: None,
369384
},
370385
]
@@ -420,6 +435,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
420435
meta: None,
421436
alias_member: None,
422437
format: None,
438+
format_description: None,
423439
currency: None,
424440
},
425441
CubeMetaMeasure {
@@ -432,6 +448,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
432448
meta: None,
433449
alias_member: None,
434450
format: None,
451+
format_description: None,
435452
currency: None,
436453
},
437454
CubeMetaMeasure {
@@ -444,6 +461,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
444461
meta: None,
445462
alias_member: None,
446463
format: None,
464+
format_description: None,
447465
currency: None,
448466
},
449467
]
@@ -460,6 +478,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
460478
meta: None,
461479
alias_member: None,
462480
format: None,
481+
format_description: None,
463482
currency: None,
464483
},
465484
CubeMetaMeasure {
@@ -472,6 +491,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
472491
meta: None,
473492
alias_member: None,
474493
format: None,
494+
format_description: None,
475495
currency: None,
476496
},
477497
CubeMetaMeasure {
@@ -484,6 +504,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
484504
meta: None,
485505
alias_member: None,
486506
format: None,
507+
format_description: None,
487508
currency: None,
488509
},
489510
CubeMetaMeasure {
@@ -496,6 +517,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
496517
meta: None,
497518
alias_member: None,
498519
format: None,
520+
format_description: None,
499521
currency: None,
500522
},
501523
CubeMetaMeasure {
@@ -508,6 +530,7 @@ pub fn get_test_meta() -> Vec<CubeMeta> {
508530
meta: None,
509531
alias_member: None,
510532
format: None,
533+
format_description: None,
511534
currency: None,
512535
},
513536
]
@@ -540,6 +563,7 @@ pub fn get_string_cube_meta() -> Vec<CubeMeta> {
540563
agg_type: Some("string".to_string()),
541564
meta: None,
542565
format: None,
566+
format_description: None,
543567
currency: None,
544568
alias_member: None,
545569
}],
@@ -569,6 +593,7 @@ pub fn get_sixteen_char_member_cube() -> Vec<CubeMeta> {
569593
agg_type: Some("sum".to_string()),
570594
meta: None,
571595
format: None,
596+
format_description: None,
572597
currency: None,
573598
alias_member: None,
574599
},
@@ -581,6 +606,7 @@ pub fn get_sixteen_char_member_cube() -> Vec<CubeMeta> {
581606
agg_type: Some("avg".to_string()),
582607
meta: None,
583608
format: None,
609+
format_description: None,
584610
currency: None,
585611
alias_member: None,
586612
},
@@ -593,6 +619,7 @@ pub fn get_sixteen_char_member_cube() -> Vec<CubeMeta> {
593619
agg_type: Some("count".to_string()),
594620
meta: None,
595621
format: None,
622+
format_description: None,
596623
currency: None,
597624
alias_member: None,
598625
},

0 commit comments

Comments
 (0)