@@ -4,21 +4,18 @@ use serde_json::Value;
44use std:: { collections:: HashMap , fmt:: Display } ;
55
66#[ derive( Debug , Clone , Serialize , Deserialize ) ]
7+ #[ serde( rename_all = "camelCase" ) ]
78pub enum ResultType {
8- #[ serde( rename = "default" ) ]
99 Default ,
10- #[ serde( rename = "compact" ) ]
1110 Compact ,
1211}
1312
1413#[ derive( Default , Debug , Clone , Serialize , Deserialize ) ]
14+ #[ serde( rename_all = "camelCase" ) ]
1515pub enum QueryType {
16- #[ serde( rename = "regularQuery" ) ]
1716 #[ default]
1817 RegularQuery ,
19- #[ serde( rename = "compareDateRangeQuery" ) ]
2018 CompareDateRangeQuery ,
21- #[ serde( rename = "blendingQuery" ) ]
2219 BlendingQuery ,
2320}
2421
@@ -34,56 +31,35 @@ impl Display for QueryType {
3431}
3532
3633#[ derive( Debug , Serialize , Deserialize ) ]
34+ #[ serde( rename_all = "camelCase" ) ]
3735pub enum MemberType {
38- #[ serde( rename = "measures" ) ]
3936 Measures ,
40- #[ serde( rename = "dimensions" ) ]
4137 Dimensions ,
42- #[ serde( rename = "segments" ) ]
4338 Segments ,
4439}
4540
4641#[ derive( Debug , Clone , Serialize , Deserialize ) ]
42+ #[ serde( rename_all = "camelCase" ) ]
4743pub enum FilterOperator {
48- #[ serde( rename = "equals" ) ]
4944 Equals ,
50- #[ serde( rename = "notEquals" ) ]
5145 NotEquals ,
52- #[ serde( rename = "contains" ) ]
5346 Contains ,
54- #[ serde( rename = "notContains" ) ]
5547 NotContains ,
56- #[ serde( rename = "in" ) ]
5748 In ,
58- #[ serde( rename = "notIn" ) ]
5949 NotIn ,
60- #[ serde( rename = "gt" ) ]
6150 Gt ,
62- #[ serde( rename = "gte" ) ]
6351 Gte ,
64- #[ serde( rename = "lt" ) ]
6552 Lt ,
66- #[ serde( rename = "lte" ) ]
6753 Lte ,
68- #[ serde( rename = "set" ) ]
6954 Set ,
70- #[ serde( rename = "notSet" ) ]
7155 NotSet ,
72- #[ serde( rename = "inDateRange" ) ]
7356 InDateRange ,
74- #[ serde( rename = "notInDateRange" ) ]
7557 NotInDateRange ,
76- #[ serde( rename = "onTheDate" ) ]
7758 OnTheDate ,
78- #[ serde( rename = "beforeDate" ) ]
7959 BeforeDate ,
80- #[ serde( rename = "beforeOrOnDate" ) ]
8160 BeforeOrOnDate ,
82- #[ serde( rename = "afterDate" ) ]
8361 AfterDate ,
84- #[ serde( rename = "afterOrOnDate" ) ]
8562 AfterOrOnDate ,
86- #[ serde( rename = "measureFilter" ) ]
8763 MeasureFilter ,
8864}
8965
@@ -95,32 +71,30 @@ pub struct QueryFilter {
9571}
9672
9773#[ derive( Debug , Clone , Serialize , Deserialize , Hash , Eq , PartialEq ) ]
74+ #[ serde( rename_all = "camelCase" ) ]
9875pub struct GroupingSet {
9976 pub group_type : String ,
10077 pub id : u32 ,
10178 pub sub_id : Option < u32 > ,
10279}
10380
10481#[ derive( Debug , Clone , Serialize , Deserialize , Hash , Eq , PartialEq ) ]
82+ #[ serde( rename_all = "camelCase" ) ]
10583pub struct ParsedMemberExpression {
10684 pub expression : Vec < String > ,
107- #[ serde( rename = "cubeName" ) ]
10885 pub cube_name : String ,
10986 pub name : String ,
110- #[ serde( rename = "expressionName" ) ]
11187 pub expression_name : String ,
11288 pub definition : String ,
11389 #[ serde( skip_serializing_if = "Option::is_none" ) ]
114- #[ serde( rename = "groupingSet" ) ]
11590 pub grouping_set : Option < GroupingSet > ,
11691}
11792
11893#[ derive( Debug , Clone , Serialize , Deserialize ) ]
94+ #[ serde( rename_all = "camelCase" ) ]
11995pub struct QueryTimeDimension {
12096 pub dimension : String ,
121- #[ serde( rename = "dateRange" ) ]
12297 pub date_range : Option < Vec < String > > ,
123- #[ serde( rename = "compareDateRange" ) ]
12498 pub compare_date_range : Option < Vec < String > > ,
12599 pub granularity : Option < String > ,
126100}
@@ -141,6 +115,7 @@ pub struct GranularityMeta {
141115}
142116
143117#[ derive( Debug , Clone , Serialize , Deserialize ) ]
118+ #[ serde( rename_all = "camelCase" ) ]
144119pub struct ConfigItem {
145120 #[ serde( skip_serializing_if = "Option::is_none" ) ]
146121 pub title : Option < String > ,
@@ -156,16 +131,15 @@ pub struct ConfigItem {
156131 #[ serde( skip_serializing_if = "Option::is_none" ) ]
157132 pub meta : Option < Value > ,
158133 #[ serde( skip_serializing_if = "Option::is_none" ) ]
159- #[ serde( rename = "drillMembers" ) ]
160134 pub drill_members : Option < Vec < Value > > ,
161135 #[ serde( skip_serializing_if = "Option::is_none" ) ]
162- #[ serde( rename = "drillMembersGrouped" ) ]
163136 pub drill_members_grouped : Option < Value > ,
164137 #[ serde( skip_serializing_if = "Option::is_none" ) ]
165138 pub granularities : Option < Vec < GranularityMeta > > ,
166139}
167140
168141#[ derive( Debug , Clone , Serialize , Deserialize ) ]
142+ #[ serde( rename_all = "camelCase" ) ]
169143pub struct AnnotatedConfigItem {
170144 #[ serde( skip_serializing_if = "Option::is_none" ) ]
171145 pub title : Option < String > ,
@@ -181,10 +155,8 @@ pub struct AnnotatedConfigItem {
181155 #[ serde( skip_serializing_if = "Option::is_none" ) ]
182156 pub meta : Option < Value > ,
183157 #[ serde( skip_serializing_if = "Option::is_none" ) ]
184- #[ serde( rename = "drillMembers" ) ]
185158 pub drill_members : Option < Vec < Value > > ,
186159 #[ serde( skip_serializing_if = "Option::is_none" ) ]
187- #[ serde( rename = "drillMembersGrouped" ) ]
188160 pub drill_members_grouped : Option < Value > ,
189161 #[ serde( skip_serializing_if = "Option::is_none" ) ]
190162 pub granularity : Option < GranularityMeta > ,
@@ -209,6 +181,7 @@ pub struct NormalizedQueryFilter {
209181// TODO: Not used, as all members are made as Strings for now
210182// XXX: Omitted function variant
211183#[ derive( Debug , Clone , Serialize , Deserialize , Hash , Eq , PartialEq ) ]
184+ #[ serde( untagged) ]
212185pub enum MemberOrMemberExpression {
213186 Member ( String ) ,
214187 MemberExpression ( ParsedMemberExpression ) ,
@@ -240,6 +213,7 @@ pub enum LogicalFilter {
240213}
241214
242215#[ derive( Debug , Serialize , Deserialize ) ]
216+ #[ serde( rename_all = "camelCase" ) ]
243217pub struct Query {
244218 // pub measures: Vec<MemberOrMemberExpression>,
245219 pub measures : Vec < String > ,
@@ -248,7 +222,6 @@ pub struct Query {
248222 pub dimensions : Option < Vec < String > > ,
249223 #[ serde( skip_serializing_if = "Option::is_none" ) ]
250224 pub filters : Option < Vec < LogicalFilter > > ,
251- #[ serde( rename = "timeDimensions" ) ]
252225 #[ serde( skip_serializing_if = "Option::is_none" ) ]
253226 pub time_dimensions : Option < Vec < QueryTimeDimension > > ,
254227 #[ serde( skip_serializing_if = "Option::is_none" ) ]
@@ -261,23 +234,21 @@ pub struct Query {
261234 #[ serde( skip_serializing_if = "Option::is_none" ) ]
262235 pub total : Option < bool > ,
263236 #[ serde( skip_serializing_if = "Option::is_none" ) ]
264- #[ serde( rename = "totalQuery" ) ]
265237 pub total_query : Option < bool > ,
266238 #[ serde( skip_serializing_if = "Option::is_none" ) ]
267239 pub order : Option < Value > ,
268240 #[ serde( skip_serializing_if = "Option::is_none" ) ]
269241 pub timezone : Option < String > ,
270- #[ serde( rename = "renewQuery" ) ]
271242 #[ serde( skip_serializing_if = "Option::is_none" ) ]
272243 pub renew_query : Option < bool > ,
273244 #[ serde( skip_serializing_if = "Option::is_none" ) ]
274245 pub ungrouped : Option < bool > ,
275- #[ serde( rename = "responseFormat" ) ]
276246 #[ serde( skip_serializing_if = "Option::is_none" ) ]
277247 pub response_format : Option < ResultType > ,
278248}
279249
280250#[ derive( Debug , Clone , Serialize , Deserialize ) ]
251+ #[ serde( rename_all = "camelCase" ) ]
281252pub struct NormalizedQuery {
282253 #[ serde( skip_serializing_if = "Option::is_none" ) ]
283254 // pub measures: Vec<MemberOrMemberExpression>,
@@ -286,7 +257,6 @@ pub struct NormalizedQuery {
286257 // pub dimensions: Option<Vec<MemberOrMemberExpression>>,
287258 pub dimensions : Option < Vec < String > > ,
288259 #[ serde( skip_serializing_if = "Option::is_none" ) ]
289- #[ serde( rename = "timeDimensions" ) ]
290260 pub time_dimensions : Option < Vec < QueryTimeDimension > > ,
291261 // pub segments: Option<Vec<MemberOrMemberExpression>>,
292262 #[ serde( skip_serializing_if = "Option::is_none" ) ]
@@ -298,38 +268,32 @@ pub struct NormalizedQuery {
298268 #[ serde( skip_serializing_if = "Option::is_none" ) ]
299269 pub total : Option < bool > ,
300270 #[ serde( skip_serializing_if = "Option::is_none" ) ]
301- #[ serde( rename = "totalQuery" ) ]
302271 pub total_query : Option < bool > ,
303272 #[ serde( skip_serializing_if = "Option::is_none" ) ]
304273 pub timezone : Option < String > ,
305274 #[ serde( skip_serializing_if = "Option::is_none" ) ]
306- #[ serde( rename = "renewQuery" ) ]
307275 pub renew_query : Option < bool > ,
308276 #[ serde( skip_serializing_if = "Option::is_none" ) ]
309277 pub ungrouped : Option < bool > ,
310- #[ serde( rename = "responseFormat " ) ]
278+ #[ serde( skip_serializing_if = "Option::is_none " ) ]
311279 pub response_format : Option < ResultType > ,
312280 #[ serde( skip_serializing_if = "Option::is_none" ) ]
313281 pub filters : Option < Vec < NormalizedQueryFilter > > ,
314282 #[ serde( skip_serializing_if = "Option::is_none" ) ]
315- #[ serde( rename = "rowLimit" ) ]
316283 pub row_limit : Option < u32 > ,
317284 #[ serde( skip_serializing_if = "Option::is_none" ) ]
318285 pub order : Option < Vec < Order > > ,
319286 #[ serde( skip_serializing_if = "Option::is_none" ) ]
320- #[ serde( rename = "queryType" ) ]
321287 pub query_type : Option < QueryType > ,
322288}
323289
324290#[ derive( Debug , Clone , Deserialize ) ]
291+ #[ serde( rename_all = "camelCase" ) ]
325292pub struct TransformDataRequest {
326- #[ serde( rename = "aliasToMemberNameMap" ) ]
327293 pub alias_to_member_name_map : HashMap < String , String > ,
328294 pub annotation : HashMap < String , ConfigItem > ,
329295 pub query : NormalizedQuery ,
330- #[ serde( rename = "queryType" ) ]
331296 pub query_type : Option < QueryType > ,
332- #[ serde( rename = "resType" ) ]
333297 pub res_type : Option < ResultType > ,
334298}
335299
0 commit comments