Skip to content

Commit eae67bf

Browse files
committed
another fix in deserialization
1 parent a9251ae commit eae67bf

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

rust/cubeorchestrator/src/transport.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ pub enum FilterOperator {
6767
NotStartsWith,
6868
}
6969

70-
#[derive(Debug, Serialize, Deserialize)]
70+
#[derive(Debug, Clone, Serialize, Deserialize)]
7171
pub struct QueryFilter {
7272
pub member: String,
7373
pub operator: FilterOperator,
@@ -135,13 +135,21 @@ pub struct ConfigItem {
135135
#[serde(skip_serializing_if = "Option::is_none")]
136136
pub meta: Option<Value>,
137137
#[serde(skip_serializing_if = "Option::is_none")]
138-
pub drill_members: Option<Vec<Value>>,
138+
pub drill_members: Option<Vec<String>>,
139139
#[serde(skip_serializing_if = "Option::is_none")]
140-
pub drill_members_grouped: Option<Value>,
140+
pub drill_members_grouped: Option<DrillMembersGrouped>,
141141
#[serde(skip_serializing_if = "Option::is_none")]
142142
pub granularities: Option<Vec<GranularityMeta>>,
143143
}
144144

145+
#[derive(Debug, Clone, Serialize, Deserialize)]
146+
pub struct DrillMembersGrouped {
147+
#[serde(skip_serializing_if = "Option::is_none")]
148+
pub measures: Option<Vec<String>>,
149+
#[serde(skip_serializing_if = "Option::is_none")]
150+
pub dimensions: Option<Vec<String>>,
151+
}
152+
145153
#[derive(Debug, Clone, Serialize, Deserialize)]
146154
#[serde(rename_all = "camelCase")]
147155
pub struct AnnotatedConfigItem {
@@ -191,29 +199,23 @@ pub enum MemberOrMemberExpression {
191199
MemberExpression(ParsedMemberExpression),
192200
}
193201

194-
#[derive(Debug, Serialize, Deserialize)]
202+
#[derive(Debug, Clone, Serialize, Deserialize)]
195203
pub struct LogicalAndFilter {
196-
pub and: Vec<LogicalFilter>,
204+
pub and: Vec<QueryFilterOrLogicalFilter>,
197205
}
198206

199-
#[derive(Debug, Serialize, Deserialize)]
207+
#[derive(Debug, Clone, Serialize, Deserialize)]
200208
pub struct LogicalOrFilter {
201-
pub or: Vec<LogicalFilter>,
202-
}
203-
204-
#[derive(Debug, Serialize, Deserialize)]
205-
pub enum QueryFilterOrLogicalFilter {
206-
QueryFilter(QueryFilter),
207-
LogicalAndFilter(LogicalAndFilter),
208-
LogicalOrFilter(LogicalOrFilter),
209+
pub or: Vec<QueryFilterOrLogicalFilter>,
209210
}
210211

211-
#[derive(Debug, Serialize, Deserialize)]
212+
#[derive(Debug, Clone, Serialize, Deserialize)]
212213
#[serde(untagged)]
213-
pub enum LogicalFilter {
214+
pub enum QueryFilterOrLogicalFilter {
214215
QueryFilter(QueryFilter),
215216
LogicalAndFilter(LogicalAndFilter),
216217
LogicalOrFilter(LogicalOrFilter),
218+
NormalizedQueryFilter(NormalizedQueryFilter),
217219
}
218220

219221
#[derive(Debug, Serialize, Deserialize)]
@@ -225,7 +227,7 @@ pub struct Query {
225227
// pub dimensions: Option<Vec<MemberOrMemberExpression>>,
226228
pub dimensions: Option<Vec<String>>,
227229
#[serde(skip_serializing_if = "Option::is_none")]
228-
pub filters: Option<Vec<LogicalFilter>>,
230+
pub filters: Option<Vec<QueryFilterOrLogicalFilter>>,
229231
#[serde(skip_serializing_if = "Option::is_none")]
230232
pub time_dimensions: Option<Vec<QueryTimeDimension>>,
231233
#[serde(skip_serializing_if = "Option::is_none")]
@@ -282,7 +284,7 @@ pub struct NormalizedQuery {
282284
#[serde(skip_serializing_if = "Option::is_none")]
283285
pub response_format: Option<ResultType>,
284286
#[serde(skip_serializing_if = "Option::is_none")]
285-
pub filters: Option<Vec<NormalizedQueryFilter>>,
287+
pub filters: Option<Vec<QueryFilterOrLogicalFilter>>,
286288
#[serde(skip_serializing_if = "Option::is_none")]
287289
pub row_limit: Option<u32>,
288290
#[serde(skip_serializing_if = "Option::is_none")]

0 commit comments

Comments
 (0)