Skip to content

Commit

Permalink
refactor serde annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
KSDaemon committed Dec 17, 2024
1 parent b2bb080 commit 0157789
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 62 deletions.
14 changes: 2 additions & 12 deletions rust/cubeorchestrator/src/query_result_transform.rs
Original file line number Diff line number Diff line change
Expand Up @@ -476,14 +476,12 @@ impl TransformedData {
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RequestResultDataMulti {
#[serde(rename = "queryType")]
pub query_type: QueryType,
pub results: Vec<RequestResultData>,
#[serde(rename = "pivotQuery")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pivot_query: Option<NormalizedQuery>,
#[serde(rename = "slowQuery")]
pub slow_query: bool,
}

Expand Down Expand Up @@ -516,36 +514,28 @@ impl RequestResultDataMulti {
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RequestResultData {
pub query: NormalizedQuery,
#[serde(rename = "lastRefreshTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub last_refresh_time: Option<String>,
#[serde(rename = "refreshKeyValues")]
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_key_values: Option<Value>,
#[serde(rename = "usedPreAggregations")]
#[serde(skip_serializing_if = "Option::is_none")]
pub used_pre_aggregations: Option<Value>,
#[serde(rename = "transformedQuery")]
#[serde(skip_serializing_if = "Option::is_none")]
pub transformed_query: Option<Value>,
#[serde(rename = "requestId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
pub annotation: HashMap<String, HashMap<String, AnnotatedConfigItem>>,
#[serde(rename = "dataSource")]
#[serde(skip_serializing_if = "Option::is_none")]
pub data_source: Option<String>,
#[serde(rename = "dbType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub db_type: Option<String>,
#[serde(rename = "extDbType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ext_db_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external: Option<bool>,
#[serde(rename = "slowQuery")]
pub slow_query: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<u64>,
Expand Down
64 changes: 14 additions & 50 deletions rust/cubeorchestrator/src/transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@ use serde_json::Value;
use std::{collections::HashMap, fmt::Display};

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ResultType {
#[serde(rename = "default")]
Default,
#[serde(rename = "compact")]
Compact,
}

#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum QueryType {
#[serde(rename = "regularQuery")]
#[default]
RegularQuery,
#[serde(rename = "compareDateRangeQuery")]
CompareDateRangeQuery,
#[serde(rename = "blendingQuery")]
BlendingQuery,
}

Expand All @@ -34,56 +31,35 @@ impl Display for QueryType {
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum MemberType {
#[serde(rename = "measures")]
Measures,
#[serde(rename = "dimensions")]
Dimensions,
#[serde(rename = "segments")]
Segments,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum FilterOperator {
#[serde(rename = "equals")]
Equals,
#[serde(rename = "notEquals")]
NotEquals,
#[serde(rename = "contains")]
Contains,
#[serde(rename = "notContains")]
NotContains,
#[serde(rename = "in")]
In,
#[serde(rename = "notIn")]
NotIn,
#[serde(rename = "gt")]
Gt,
#[serde(rename = "gte")]
Gte,
#[serde(rename = "lt")]
Lt,
#[serde(rename = "lte")]
Lte,
#[serde(rename = "set")]
Set,
#[serde(rename = "notSet")]
NotSet,
#[serde(rename = "inDateRange")]
InDateRange,
#[serde(rename = "notInDateRange")]
NotInDateRange,
#[serde(rename = "onTheDate")]
OnTheDate,
#[serde(rename = "beforeDate")]
BeforeDate,
#[serde(rename = "beforeOrOnDate")]
BeforeOrOnDate,
#[serde(rename = "afterDate")]
AfterDate,
#[serde(rename = "afterOrOnDate")]
AfterOrOnDate,
#[serde(rename = "measureFilter")]
MeasureFilter,
}

Expand All @@ -95,32 +71,30 @@ pub struct QueryFilter {
}

#[derive(Debug, Clone, Serialize, Deserialize, Hash, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct GroupingSet {
pub group_type: String,
pub id: u32,
pub sub_id: Option<u32>,
}

#[derive(Debug, Clone, Serialize, Deserialize, Hash, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ParsedMemberExpression {
pub expression: Vec<String>,
#[serde(rename = "cubeName")]
pub cube_name: String,
pub name: String,
#[serde(rename = "expressionName")]
pub expression_name: String,
pub definition: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "groupingSet")]
pub grouping_set: Option<GroupingSet>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryTimeDimension {
pub dimension: String,
#[serde(rename = "dateRange")]
pub date_range: Option<Vec<String>>,
#[serde(rename = "compareDateRange")]
pub compare_date_range: Option<Vec<String>>,
pub granularity: Option<String>,
}
Expand All @@ -141,6 +115,7 @@ pub struct GranularityMeta {
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
Expand All @@ -156,16 +131,15 @@ pub struct ConfigItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "drillMembers")]
pub drill_members: Option<Vec<Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "drillMembersGrouped")]
pub drill_members_grouped: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub granularities: Option<Vec<GranularityMeta>>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnotatedConfigItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
Expand All @@ -181,10 +155,8 @@ pub struct AnnotatedConfigItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "drillMembers")]
pub drill_members: Option<Vec<Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "drillMembersGrouped")]
pub drill_members_grouped: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub granularity: Option<GranularityMeta>,
Expand All @@ -209,6 +181,7 @@ pub struct NormalizedQueryFilter {
// TODO: Not used, as all members are made as Strings for now
// XXX: Omitted function variant
#[derive(Debug, Clone, Serialize, Deserialize, Hash, Eq, PartialEq)]
#[serde(untagged)]
pub enum MemberOrMemberExpression {
Member(String),
MemberExpression(ParsedMemberExpression),
Expand Down Expand Up @@ -240,6 +213,7 @@ pub enum LogicalFilter {
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Query {
// pub measures: Vec<MemberOrMemberExpression>,
pub measures: Vec<String>,
Expand All @@ -248,7 +222,6 @@ pub struct Query {
pub dimensions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Vec<LogicalFilter>>,
#[serde(rename = "timeDimensions")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_dimensions: Option<Vec<QueryTimeDimension>>,
#[serde(skip_serializing_if = "Option::is_none")]
Expand All @@ -261,23 +234,21 @@ pub struct Query {
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "totalQuery")]
pub total_query: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(rename = "renewQuery")]
#[serde(skip_serializing_if = "Option::is_none")]
pub renew_query: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ungrouped: Option<bool>,
#[serde(rename = "responseFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
pub response_format: Option<ResultType>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NormalizedQuery {
#[serde(skip_serializing_if = "Option::is_none")]
// pub measures: Vec<MemberOrMemberExpression>,
Expand All @@ -286,7 +257,6 @@ pub struct NormalizedQuery {
// pub dimensions: Option<Vec<MemberOrMemberExpression>>,
pub dimensions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "timeDimensions")]
pub time_dimensions: Option<Vec<QueryTimeDimension>>,
// pub segments: Option<Vec<MemberOrMemberExpression>>,
#[serde(skip_serializing_if = "Option::is_none")]
Expand All @@ -298,38 +268,32 @@ pub struct NormalizedQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "totalQuery")]
pub total_query: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "renewQuery")]
pub renew_query: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ungrouped: Option<bool>,
#[serde(rename = "responseFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
pub response_format: Option<ResultType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Vec<NormalizedQueryFilter>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rowLimit")]
pub row_limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<Vec<Order>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "queryType")]
pub query_type: Option<QueryType>,
}

#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransformDataRequest {
#[serde(rename = "aliasToMemberNameMap")]
pub alias_to_member_name_map: HashMap<String, String>,
pub annotation: HashMap<String, ConfigItem>,
pub query: NormalizedQuery,
#[serde(rename = "queryType")]
pub query_type: Option<QueryType>,
#[serde(rename = "resType")]
pub res_type: Option<ResultType>,
}

Expand Down

0 comments on commit 0157789

Please sign in to comment.