Skip to content

Commit

Permalink
fix(cubesql): Unique filtering for measures/dimensions/segments in Re…
Browse files Browse the repository at this point in the history
…quest
  • Loading branch information
ovr committed Feb 8, 2022
1 parent 38fdf35 commit 552c87b
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 8 deletions.
16 changes: 16 additions & 0 deletions rust/cubesql/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions rust/cubesql/cubesql/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ log = "=0.4.11"
# It's a problem with determing local_offset_at for local-offset feature
# https://github.com/time-rs/time/issues/325
simple_logger = "=1.13.0"
itertools = "0.10.3"
async-trait = "0.1.36"
regex = "1.5"
uuid = { version = "0.8", features = ["serde", "v4"] }
Expand Down
17 changes: 9 additions & 8 deletions rust/cubesql/cubesql/src/compile/builder.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use cubeclient::models::{
V1LoadRequestQuery, V1LoadRequestQueryFilterItem, V1LoadRequestQueryTimeDimension,
};
use itertools::Itertools;
use msql_srv::ColumnType;
use serde::{ser::SerializeStruct, Serialize, Serializer};

Expand Down Expand Up @@ -134,31 +135,31 @@ impl QueryBuilder {
self.filters.push(filter);
}

pub fn build(&self) -> super::CompiledQuery {
pub fn build(self) -> super::CompiledQuery {
CompiledQuery {
request: V1LoadRequestQuery {
measures: Some(self.measures.clone()),
dimensions: Some(self.dimensions.clone()),
segments: Some(self.segments.clone()),
measures: Some(self.measures.into_iter().unique().collect()),
dimensions: Some(self.dimensions.into_iter().unique().collect()),
segments: Some(self.segments.into_iter().unique().collect()),
time_dimensions: if !self.time_dimensions.is_empty() {
Some(self.time_dimensions.clone())
Some(self.time_dimensions)
} else {
None
},
order: if !self.order.is_empty() {
Some(self.order.clone())
Some(self.order)
} else {
None
},
limit: self.limit,
offset: self.offset,
filters: if !self.filters.is_empty() {
Some(self.filters.clone())
Some(self.filters)
} else {
None
},
},
meta: self.meta.clone(),
meta: self.meta,
}
}
}

0 comments on commit 552c87b

Please sign in to comment.