@@ -82,14 +82,31 @@ pub struct GroupingSet {
8282 pub sub_id : Option < u32 > ,
8383}
8484
85+ #[ derive( Debug , Clone , Serialize , Deserialize , Hash , Eq , PartialEq ) ]
86+ #[ serde( rename_all = "camelCase" ) ]
87+ pub struct MemberExpression {
88+ #[ serde( skip_deserializing) ]
89+ pub expression : Option < Value > ,
90+ pub cube_name : String ,
91+ pub name : String ,
92+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
93+ pub expression_name : Option < String > ,
94+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
95+ pub definition : Option < String > ,
96+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
97+ pub grouping_set : Option < GroupingSet > ,
98+ }
99+
85100#[ derive( Debug , Clone , Serialize , Deserialize , Hash , Eq , PartialEq ) ]
86101#[ serde( rename_all = "camelCase" ) ]
87102pub struct ParsedMemberExpression {
88103 pub expression : Vec < String > ,
89104 pub cube_name : String ,
90105 pub name : String ,
91- pub expression_name : String ,
92- pub definition : String ,
106+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
107+ pub expression_name : Option < String > ,
108+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
109+ pub definition : Option < String > ,
93110 #[ serde( skip_serializing_if = "Option::is_none" ) ]
94111 pub grouping_set : Option < GroupingSet > ,
95112}
@@ -196,7 +213,8 @@ pub struct NormalizedQueryFilter {
196213#[ serde( untagged) ]
197214pub enum MemberOrMemberExpression {
198215 Member ( String ) ,
199- MemberExpression ( ParsedMemberExpression ) ,
216+ ParsedMemberExpression ( ParsedMemberExpression ) ,
217+ MemberExpression ( MemberExpression ) ,
200218}
201219
202220#[ derive( Debug , Clone , Serialize , Deserialize ) ]
@@ -218,55 +236,17 @@ pub enum QueryFilterOrLogicalFilter {
218236 NormalizedQueryFilter ( NormalizedQueryFilter ) ,
219237}
220238
221- #[ derive( Debug , Serialize , Deserialize ) ]
222- #[ serde( rename_all = "camelCase" ) ]
223- pub struct Query {
224- // pub measures: Vec<MemberOrMemberExpression>,
225- pub measures : Vec < String > ,
226- #[ serde( skip_serializing_if = "Option::is_none" ) ]
227- // pub dimensions: Option<Vec<MemberOrMemberExpression>>,
228- pub dimensions : Option < Vec < String > > ,
229- #[ serde( skip_serializing_if = "Option::is_none" ) ]
230- pub filters : Option < Vec < QueryFilterOrLogicalFilter > > ,
231- #[ serde( skip_serializing_if = "Option::is_none" ) ]
232- pub time_dimensions : Option < Vec < QueryTimeDimension > > ,
233- #[ serde( skip_serializing_if = "Option::is_none" ) ]
234- // pub segments: Option<Vec<MemberOrMemberExpression>>,
235- pub segments : Option < Vec < String > > ,
236- #[ serde( skip_serializing_if = "Option::is_none" ) ]
237- pub limit : Option < u32 > ,
238- #[ serde( skip_serializing_if = "Option::is_none" ) ]
239- pub offset : Option < u32 > ,
240- #[ serde( skip_serializing_if = "Option::is_none" ) ]
241- pub total : Option < bool > ,
242- #[ serde( skip_serializing_if = "Option::is_none" ) ]
243- pub total_query : Option < bool > ,
244- #[ serde( skip_serializing_if = "Option::is_none" ) ]
245- pub order : Option < Value > ,
246- #[ serde( skip_serializing_if = "Option::is_none" ) ]
247- pub timezone : Option < String > ,
248- #[ serde( skip_serializing_if = "Option::is_none" ) ]
249- pub renew_query : Option < bool > ,
250- #[ serde( skip_serializing_if = "Option::is_none" ) ]
251- pub ungrouped : Option < bool > ,
252- #[ serde( skip_serializing_if = "Option::is_none" ) ]
253- pub response_format : Option < ResultType > ,
254- }
255-
256239#[ derive( Debug , Clone , Serialize , Deserialize ) ]
257240#[ serde( rename_all = "camelCase" ) ]
258241pub struct NormalizedQuery {
259242 #[ serde( skip_serializing_if = "Option::is_none" ) ]
260- // pub measures: Vec<MemberOrMemberExpression>,
261- pub measures : Option < Vec < String > > ,
243+ pub measures : Option < Vec < MemberOrMemberExpression > > ,
262244 #[ serde( skip_serializing_if = "Option::is_none" ) ]
263- // pub dimensions: Option<Vec<MemberOrMemberExpression>>,
264- pub dimensions : Option < Vec < String > > ,
245+ pub dimensions : Option < Vec < MemberOrMemberExpression > > ,
265246 #[ serde( skip_serializing_if = "Option::is_none" ) ]
266247 pub time_dimensions : Option < Vec < QueryTimeDimension > > ,
267- // pub segments: Option<Vec<MemberOrMemberExpression>>,
268248 #[ serde( skip_serializing_if = "Option::is_none" ) ]
269- pub segments : Option < Vec < String > > ,
249+ pub segments : Option < Vec < MemberOrMemberExpression > > ,
270250 #[ serde( skip_serializing_if = "Option::is_none" ) ]
271251 pub limit : Option < u32 > ,
272252 #[ serde( skip_serializing_if = "Option::is_none" ) ]
0 commit comments