From 7b9cf0384afe2faf1620b7e0d02be8ba5f11cf61 Mon Sep 17 00:00:00 2001 From: Mikhail Cheshkov Date: Thu, 13 Feb 2025 23:21:21 +0200 Subject: [PATCH] chore(cubesql): Bump openapi-generator --- packages/cubejs-backend-native/Cargo.lock | 15 +- rust/cubenativeutils/Cargo.lock | 13 +- rust/cubesql/Cargo.lock | 13 +- .../cubeclient/.openapi-generator/VERSION | 2 +- rust/cubesql/cubeclient/Cargo.toml | 4 +- rust/cubesql/cubeclient/DEVELOPMENT.md | 2 +- .../cubeclient/src/apis/default_api.rs | 1 + rust/cubesql/cubeclient/src/lib.rs | 9 +- .../cubeclient/src/models/v1_cube_meta.rs | 27 +- .../src/models/v1_cube_meta_dimension.rs | 7 +- .../v1_cube_meta_dimension_granularity.rs | 5 +- .../src/models/v1_cube_meta_folder.rs | 5 +- .../src/models/v1_cube_meta_hierarchy.rs | 5 +- .../src/models/v1_cube_meta_join.rs | 5 +- .../src/models/v1_cube_meta_measure.rs | 5 +- .../src/models/v1_cube_meta_segment.rs | 5 +- .../src/models/v1_cube_meta_type.rs | 11 +- .../cubesql/cubeclient/src/models/v1_error.rs | 5 +- .../src/models/v1_load_continue_wait.rs | 2 + .../cubeclient/src/models/v1_load_request.rs | 7 +- .../src/models/v1_load_request_query.rs | 11 +- .../v1_load_request_query_filter_base.rs | 5 +- .../v1_load_request_query_filter_item.rs | 33 +- ...1_load_request_query_filter_logical_and.rs | 5 +- ...v1_load_request_query_filter_logical_or.rs | 5 +- .../v1_load_request_query_join_subquery.rs | 5 +- .../v1_load_request_query_time_dimension.rs | 5 +- .../cubeclient/src/models/v1_load_response.rs | 9 +- .../cubeclient/src/models/v1_load_result.rs | 10 +- .../src/models/v1_load_result_annotation.rs | 5 +- .../cubeclient/src/models/v1_meta_response.rs | 7 +- rust/cubesql/cubesql/src/compile/mod.rs | 2556 +++++++++-------- .../cubesql/src/compile/rewrite/converter.rs | 44 +- .../src/compile/test/test_cube_join.rs | 159 +- .../cubesql/src/compile/test/test_filters.rs | 32 +- .../src/compile/test/test_user_change.rs | 20 +- rust/cubesqlplanner/Cargo.lock | 15 +- 37 files changed, 1683 insertions(+), 1391 deletions(-) diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 5cd459688e993..4a4e6cc8087d3 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -716,8 +716,8 @@ dependencies = [ "reqwest", "reqwest-middleware", "serde", - "serde_derive", "serde_json", + "serde_repr", "tokio", "url", "uuid 1.6.1", @@ -2871,6 +2871,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" diff --git a/rust/cubenativeutils/Cargo.lock b/rust/cubenativeutils/Cargo.lock index a428a689435cd..d15341f2d4573 100644 --- a/rust/cubenativeutils/Cargo.lock +++ b/rust/cubenativeutils/Cargo.lock @@ -641,8 +641,8 @@ dependencies = [ "reqwest", "reqwest-middleware", "serde", - "serde_derive", "serde_json", + "serde_repr", "tokio", "url", "uuid 1.9.1", @@ -2502,6 +2502,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index ed5cf710e5d61..15af930899e4a 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -733,8 +733,8 @@ dependencies = [ "reqwest", "reqwest-middleware", "serde", - "serde_derive", "serde_json", + "serde_repr", "tokio", "url", "uuid 1.10.0", @@ -2643,6 +2643,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" diff --git a/rust/cubesql/cubeclient/.openapi-generator/VERSION b/rust/cubesql/cubeclient/.openapi-generator/VERSION index cd802a1ec4eb6..b23eb27529e2b 100644 --- a/rust/cubesql/cubeclient/.openapi-generator/VERSION +++ b/rust/cubesql/cubeclient/.openapi-generator/VERSION @@ -1 +1 @@ -6.6.0 \ No newline at end of file +7.11.0 diff --git a/rust/cubesql/cubeclient/Cargo.toml b/rust/cubesql/cubeclient/Cargo.toml index 1e7797cd9bf98..e71554c50f32c 100644 --- a/rust/cubesql/cubeclient/Cargo.toml +++ b/rust/cubesql/cubeclient/Cargo.toml @@ -9,9 +9,9 @@ documentation = "https://cube.dev/docs" homepage = "https://cube.dev" [dependencies] -serde = "1.0.209" -serde_derive = "1.0.209" +serde = { version = "1.0.209", features = ["derive"] } serde_json = "^1.0" +serde_repr = "0.1.19" url = "^2.2" reqwest-middleware = { version = "0.3.2", features = ["json"] } anyhow = "1.0" diff --git a/rust/cubesql/cubeclient/DEVELOPMENT.md b/rust/cubesql/cubeclient/DEVELOPMENT.md index ce5d1e194e695..e1a7bf0d6112e 100644 --- a/rust/cubesql/cubeclient/DEVELOPMENT.md +++ b/rust/cubesql/cubeclient/DEVELOPMENT.md @@ -22,7 +22,7 @@ openapi-generator generate -i ../../packages/cubejs-api-gateway/openspec.yml -g From repo root ```sh -docker run --rm -v ".:/cube" --workdir /cube/rust/cubesql openapitools/openapi-generator-cli:v6.6.0 generate -i ../../packages/cubejs-api-gateway/openspec.yml -g rust -o cubeclient +docker run --rm -v ".:/cube" --workdir /cube/rust/cubesql openapitools/openapi-generator-cli:v7.11.0 generate -i ../../packages/cubejs-api-gateway/openspec.yml -g rust -o cubeclient ``` Take care around Docker on root and files owner and mode diff --git a/rust/cubesql/cubeclient/src/apis/default_api.rs b/rust/cubesql/cubeclient/src/apis/default_api.rs index ad33866cdeb23..ccb54a893a49b 100644 --- a/rust/cubesql/cubeclient/src/apis/default_api.rs +++ b/rust/cubesql/cubeclient/src/apis/default_api.rs @@ -1,5 +1,6 @@ use log::{debug, error}; use reqwest; +use serde::{Deserialize, Serialize}; use uuid::Uuid; use super::{configuration, Error}; diff --git a/rust/cubesql/cubeclient/src/lib.rs b/rust/cubesql/cubeclient/src/lib.rs index 60e95930302aa..9556a0a134ef1 100644 --- a/rust/cubesql/cubeclient/src/lib.rs +++ b/rust/cubesql/cubeclient/src/lib.rs @@ -1,13 +1,10 @@ -// Open spec generator generates ToString methods for enums, let's disable clippy rule as quick -// workaround. TODO: Use new one open spec generator? -#![allow(clippy::to_string_trait_impl)] - -#[macro_use] -extern crate serde_derive; +#![allow(unused_imports)] +#![allow(clippy::too_many_arguments)] extern crate reqwest; extern crate serde; extern crate serde_json; +extern crate serde_repr; extern crate url; pub mod apis; diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta.rs index e47c9349af3d6..ddd19ed03bccd 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta.rs @@ -8,39 +8,42 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMeta { #[serde(rename = "name")] pub name: String, #[serde(rename = "title", skip_serializing_if = "Option::is_none")] pub title: Option, #[serde(rename = "type")] - pub r#type: crate::models::V1CubeMetaType, + pub r#type: models::V1CubeMetaType, #[serde(rename = "meta", skip_serializing_if = "Option::is_none")] pub meta: Option, #[serde(rename = "description", skip_serializing_if = "Option::is_none")] pub description: Option, #[serde(rename = "measures")] - pub measures: Vec, + pub measures: Vec, #[serde(rename = "dimensions")] - pub dimensions: Vec, + pub dimensions: Vec, #[serde(rename = "segments")] - pub segments: Vec, + pub segments: Vec, #[serde(rename = "joins", skip_serializing_if = "Option::is_none")] - pub joins: Option>, + pub joins: Option>, #[serde(rename = "folders", skip_serializing_if = "Option::is_none")] - pub folders: Option>, + pub folders: Option>, #[serde(rename = "hierarchies", skip_serializing_if = "Option::is_none")] - pub hierarchies: Option>, + pub hierarchies: Option>, } impl V1CubeMeta { pub fn new( name: String, - r#type: crate::models::V1CubeMetaType, - measures: Vec, - dimensions: Vec, - segments: Vec, + r#type: models::V1CubeMetaType, + measures: Vec, + dimensions: Vec, + segments: Vec, ) -> V1CubeMeta { V1CubeMeta { name, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension.rs index 3b4ab102c5ca0..bf7e460589e6a 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaDimension { #[serde(rename = "name")] pub name: String, @@ -22,7 +25,7 @@ pub struct V1CubeMetaDimension { #[serde(rename = "aliasMember", skip_serializing_if = "Option::is_none")] pub alias_member: Option, #[serde(rename = "granularities", skip_serializing_if = "Option::is_none")] - pub granularities: Option>, + pub granularities: Option>, #[serde(rename = "meta", skip_serializing_if = "Option::is_none")] pub meta: Option, } diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_granularity.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_granularity.rs index f3f44c9bc3b8e..35c61b7c2e77e 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_granularity.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_dimension_granularity.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaDimensionGranularity { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_folder.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_folder.rs index b137ceedaf986..ccd75604caf04 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_folder.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_folder.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaFolder { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_hierarchy.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_hierarchy.rs index 167d09457968d..aaddc45c3424b 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_hierarchy.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_hierarchy.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaHierarchy { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_join.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_join.rs index 95c09738e9251..530ed96752045 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_join.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_join.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaJoin { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_measure.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_measure.rs index b05992a289247..0375c4156c6e2 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_measure.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_measure.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaMeasure { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_segment.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_segment.rs index 89410c34eac87..b11046c2c0d53 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_segment.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_segment.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1CubeMetaSegment { #[serde(rename = "name")] pub name: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_cube_meta_type.rs b/rust/cubesql/cubeclient/src/models/v1_cube_meta_type.rs index 63662f481a431..b8e125a856a2d 100644 --- a/rust/cubesql/cubeclient/src/models/v1_cube_meta_type.rs +++ b/rust/cubesql/cubeclient/src/models/v1_cube_meta_type.rs @@ -8,6 +8,9 @@ * Generated by: https://openapi-generator.tech */ +use crate::models; +use serde::{Deserialize, Serialize}; + /// V1CubeMetaType : Type of cube /// Type of cube #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] @@ -18,11 +21,11 @@ pub enum V1CubeMetaType { View, } -impl ToString for V1CubeMetaType { - fn to_string(&self) -> String { +impl std::fmt::Display for V1CubeMetaType { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { - Self::Cube => String::from("cube"), - Self::View => String::from("view"), + Self::Cube => write!(f, "cube"), + Self::View => write!(f, "view"), } } } diff --git a/rust/cubesql/cubeclient/src/models/v1_error.rs b/rust/cubesql/cubeclient/src/models/v1_error.rs index f20bf33476717..6d7376bfa9d24 100644 --- a/rust/cubesql/cubeclient/src/models/v1_error.rs +++ b/rust/cubesql/cubeclient/src/models/v1_error.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1Error { #[serde(rename = "error")] pub error: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_continue_wait.rs b/rust/cubesql/cubeclient/src/models/v1_load_continue_wait.rs index 57879aa449e2e..7d074c1e98584 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_continue_wait.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_continue_wait.rs @@ -1,3 +1,5 @@ +use serde::{Deserialize, Serialize}; + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadContinueWait { pub error: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request.rs b/rust/cubesql/cubeclient/src/models/v1_load_request.rs index db960d20e550f..c9d0c5e28fedb 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request.rs @@ -8,12 +8,15 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequest { #[serde(rename = "queryType", skip_serializing_if = "Option::is_none")] pub query_type: Option, #[serde(rename = "query", skip_serializing_if = "Option::is_none")] - pub query: Option, + pub query: Option, } impl V1LoadRequest { diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query.rs index 2ce959d038699..7d0473f586e56 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQuery { #[serde(rename = "measures", skip_serializing_if = "Option::is_none")] pub measures: Option>, @@ -17,7 +20,7 @@ pub struct V1LoadRequestQuery { #[serde(rename = "segments", skip_serializing_if = "Option::is_none")] pub segments: Option>, #[serde(rename = "timeDimensions", skip_serializing_if = "Option::is_none")] - pub time_dimensions: Option>, + pub time_dimensions: Option>, #[serde(rename = "order", skip_serializing_if = "Option::is_none")] pub order: Option>>, #[serde(rename = "limit", skip_serializing_if = "Option::is_none")] @@ -25,11 +28,11 @@ pub struct V1LoadRequestQuery { #[serde(rename = "offset", skip_serializing_if = "Option::is_none")] pub offset: Option, #[serde(rename = "filters", skip_serializing_if = "Option::is_none")] - pub filters: Option>, + pub filters: Option>, #[serde(rename = "ungrouped", skip_serializing_if = "Option::is_none")] pub ungrouped: Option, #[serde(rename = "subqueryJoins", skip_serializing_if = "Option::is_none")] - pub subquery_joins: Option>, + pub subquery_joins: Option>, } impl V1LoadRequestQuery { diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_base.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_base.rs index 9f2e476ff7f0f..efa348be1f2fe 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_base.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_base.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQueryFilterBase { #[serde(rename = "member", skip_serializing_if = "Option::is_none")] pub member: Option, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_item.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_item.rs index 957a0a0dc5d56..f3f08db69af88 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_item.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_item.rs @@ -8,28 +8,19 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] -pub struct V1LoadRequestQueryFilterItem { - #[serde(rename = "member", skip_serializing_if = "Option::is_none")] - pub member: Option, - #[serde(rename = "operator", skip_serializing_if = "Option::is_none")] - pub operator: Option, - #[serde(rename = "values", skip_serializing_if = "Option::is_none")] - pub values: Option>, - #[serde(rename = "or", skip_serializing_if = "Option::is_none")] - pub or: Option>, - #[serde(rename = "and", skip_serializing_if = "Option::is_none")] - pub and: Option>, +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(untagged)] +pub enum V1LoadRequestQueryFilterItem { + V1LoadRequestQueryFilterBase(Box), + V1LoadRequestQueryFilterLogicalOr(Box), + V1LoadRequestQueryFilterLogicalAnd(Box), } -impl V1LoadRequestQueryFilterItem { - pub fn new() -> V1LoadRequestQueryFilterItem { - V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, - and: None, - } +impl Default for V1LoadRequestQueryFilterItem { + fn default() -> Self { + Self::V1LoadRequestQueryFilterBase(Default::default()) } } diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_and.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_and.rs index d85e18d88875e..ad3ca9ef7c149 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_and.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_and.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQueryFilterLogicalAnd { #[serde(rename = "and", skip_serializing_if = "Option::is_none")] pub and: Option>, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_or.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_or.rs index d47a7bde8b26f..e8194cc282cba 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_or.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_filter_logical_or.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQueryFilterLogicalOr { #[serde(rename = "or", skip_serializing_if = "Option::is_none")] pub or: Option>, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_join_subquery.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_join_subquery.rs index 8a5db06e44899..eb554ba0c18be 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_join_subquery.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_join_subquery.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQueryJoinSubquery { #[serde(rename = "sql")] pub sql: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_request_query_time_dimension.rs b/rust/cubesql/cubeclient/src/models/v1_load_request_query_time_dimension.rs index 11bbd9e53e51d..09cc867fd4cae 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_request_query_time_dimension.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_request_query_time_dimension.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadRequestQueryTimeDimension { #[serde(rename = "dimension")] pub dimension: String, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_response.rs b/rust/cubesql/cubeclient/src/models/v1_load_response.rs index 35d7b8d4cad87..21b52b844b68a 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_response.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_response.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadResponse { #[serde(rename = "pivotQuery", skip_serializing_if = "Option::is_none")] pub pivot_query: Option, @@ -17,11 +20,11 @@ pub struct V1LoadResponse { #[serde(rename = "queryType", skip_serializing_if = "Option::is_none")] pub query_type: Option, #[serde(rename = "results")] - pub results: Vec, + pub results: Vec, } impl V1LoadResponse { - pub fn new(results: Vec) -> V1LoadResponse { + pub fn new(results: Vec) -> V1LoadResponse { V1LoadResponse { pivot_query: None, slow_query: None, diff --git a/rust/cubesql/cubeclient/src/models/v1_load_result.rs b/rust/cubesql/cubeclient/src/models/v1_load_result.rs index 7b50ab1633e59..b0610626d6d41 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_result.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_result.rs @@ -7,12 +7,16 @@ * * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadResult { #[serde(rename = "dataSource", skip_serializing_if = "Option::is_none")] pub data_source: Option, #[serde(rename = "annotation")] - pub annotation: Box, + pub annotation: Box, #[serde(rename = "data")] pub data: Vec, #[serde(rename = "refreshKeyValues", skip_serializing_if = "Option::is_none")] @@ -21,7 +25,7 @@ pub struct V1LoadResult { impl V1LoadResult { pub fn new( - annotation: crate::models::V1LoadResultAnnotation, + annotation: models::V1LoadResultAnnotation, data: Vec, ) -> V1LoadResult { V1LoadResult { diff --git a/rust/cubesql/cubeclient/src/models/v1_load_result_annotation.rs b/rust/cubesql/cubeclient/src/models/v1_load_result_annotation.rs index 5b4bec4802bc8..232cf4563df0c 100644 --- a/rust/cubesql/cubeclient/src/models/v1_load_result_annotation.rs +++ b/rust/cubesql/cubeclient/src/models/v1_load_result_annotation.rs @@ -8,7 +8,10 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1LoadResultAnnotation { #[serde(rename = "measures")] pub measures: serde_json::Value, diff --git a/rust/cubesql/cubeclient/src/models/v1_meta_response.rs b/rust/cubesql/cubeclient/src/models/v1_meta_response.rs index a7921d857d9f5..1363c709f82c1 100644 --- a/rust/cubesql/cubeclient/src/models/v1_meta_response.rs +++ b/rust/cubesql/cubeclient/src/models/v1_meta_response.rs @@ -8,10 +8,13 @@ * Generated by: https://openapi-generator.tech */ -#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct V1MetaResponse { #[serde(rename = "cubes", skip_serializing_if = "Option::is_none")] - pub cubes: Option>, + pub cubes: Option>, #[serde(rename = "compilerId", skip_serializing_if = "Option::is_none")] pub compiler_id: Option, } diff --git a/rust/cubesql/cubesql/src/compile/mod.rs b/rust/cubesql/cubesql/src/compile/mod.rs index 68cb378265d86..96a601bafd4cc 100644 --- a/rust/cubesql/cubesql/src/compile/mod.rs +++ b/rust/cubesql/cubesql/src/compile/mod.rs @@ -44,8 +44,9 @@ mod tests { }; use chrono::Datelike; use cubeclient::models::{ - V1LoadRequestQuery, V1LoadRequestQueryFilterItem, V1LoadRequestQueryTimeDimension, - V1LoadResponse, V1LoadResult, V1LoadResultAnnotation, + V1LoadRequestQuery, V1LoadRequestQueryFilterBase, V1LoadRequestQueryFilterItem, + V1LoadRequestQueryFilterLogicalAnd, V1LoadRequestQueryFilterLogicalOr, + V1LoadRequestQueryTimeDimension, V1LoadResponse, V1LoadResult, V1LoadResultAnnotation, }; use datafusion::{arrow::datatypes::DataType, physical_plan::displayable}; use itertools::Itertools; @@ -278,13 +279,15 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["fe".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("startsWith".to_string()), + values: Some(vec!["fe".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -310,13 +313,15 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("endsWith".to_string()), - values: Some(vec!["emale".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("endsWith".to_string()), + values: Some(vec!["emale".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -896,13 +901,15 @@ mod tests { "KibanaSampleDataEcommerce.taxful_total_price".to_string() ]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1014,13 +1021,15 @@ mod tests { segments: Some(vec!["KibanaSampleDataEcommerce.is_female".to_string()]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["0".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["0".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1039,20 +1048,20 @@ mod tests { dimensions: Some(vec![]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.has_subscription".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["false".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["0".to_string()]), - or: None, - and: None, - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.has_subscription".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["false".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["0".to_string()]), + } + )) ]), ..Default::default() } @@ -1078,13 +1087,17 @@ mod tests { "KibanaSampleDataEcommerce.taxful_total_price".to_string() ]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string() + ), + operator: Some("set".to_string()), + values: None, + } + )) + ]), ..Default::default() } ); @@ -1216,13 +1229,15 @@ ORDER BY \"COUNT(count)\" DESC" "KibanaSampleDataEcommerce.count".to_string(), "desc".to_string() ]]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1265,19 +1280,21 @@ ORDER BY \"COUNT(count)\" DESC LIMIT 10000" "desc".to_string() ]]), limit: Some(10000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.notes".to_string()), - operator: Some("equals".to_string()), - values: Some(vec![ - "1".to_string(), - "2".to_string(), - "3".to_string(), - "4".to_string(), - "5".to_string() - ]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.notes".to_string()), + operator: Some("equals".to_string()), + values: Some(vec![ + "1".to_string(), + "2".to_string(), + "3".to_string(), + "4".to_string(), + "5".to_string() + ]), + } + )) + ]), ..Default::default() } ); @@ -1324,34 +1341,34 @@ ORDER BY \"COUNT(count)\" DESC" "desc".to_string() ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["fem".to_string()]), - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["fe".to_string()]), - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["f".to_string()]), - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["fem".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["fe".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["f".to_string()]), + } + )) ]), ..Default::default() } @@ -1401,47 +1418,49 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, - and: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.customer_gender".to_string() - ), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.customer_gender".to_string() - ), - operator: Some("notEquals".to_string()), - values: Some(vec!["".to_string()]), - or: None, - and: None, - }) - ]) - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }) - ]), - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!( + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalAnd( + Box::new(V1LoadRequestQueryFilterLogicalAnd { + and: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("set".to_string()), + values: None, + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notEquals".to_string()), + values: Some(vec!["".to_string()]), + }) + )) + ]) + }) + ) + ), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )) + ]), + } + )), + ]), ..Default::default() } ); @@ -1485,13 +1504,15 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["0".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["0".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1655,13 +1676,15 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1684,13 +1707,15 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["fem".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["fem".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1713,13 +1738,15 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["0".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["0".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -1812,13 +1839,15 @@ GROUP BY segments: Some(vec![]), order: Some(vec![]), limit: Some(1000001), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["fem".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["fem".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -2031,49 +2060,47 @@ limit order: Some(vec![]), limit: Some(1000001), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("WideCube.dim1".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["Jewelry".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("WideCube.measure1".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("WideCube.measure2".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("WideCube.measure3".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("WideCube.measure4".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }) - ]), - and: None, - }, + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("WideCube.dim1".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["Jewelry".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some("WideCube.measure1".to_string()), + operator: Some("set".to_string()), + values: None, + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some("WideCube.measure2".to_string()), + operator: Some("set".to_string()), + values: None, + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some("WideCube.measure3".to_string()), + operator: Some("set".to_string()), + values: None, + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some("WideCube.measure4".to_string()), + operator: Some("set".to_string()), + values: None, + }) + )) + ]), + } + )), ]), ..Default::default() } @@ -2393,13 +2420,15 @@ from segments: Some(vec![]), order: Some(vec![]), limit: Some(1000001), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("set".to_string()), + values: None, + } + )) + ]), ..Default::default() } ); @@ -2470,13 +2499,15 @@ limit }]), order: Some(vec![]), limit: Some(1000001), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.sumPrice".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.sumPrice".to_string()), + operator: Some("set".to_string()), + values: None, + } + )) + ]), ..Default::default() } ); @@ -3068,28 +3099,32 @@ limit .find_cube_scan() .request .filters, - Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("afterOrOnDate".to_string()), - values: Some(vec!["2021-08-31T00:00:00.000Z".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("beforeDate".to_string()), - values: Some(vec!["2021-09-07T00:00:00.000Z".to_string()]), - or: None, - and: None, - }) - ]), - and: None, - },]) + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("afterOrOnDate".to_string()), + values: Some(vec!["2021-08-31T00:00:00.000Z".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("beforeDate".to_string()), + values: Some(vec!["2021-09-07T00:00:00.000Z".to_string()]), + }) + )) + ]), + } + )), + ]) ) } @@ -3101,148 +3136,186 @@ limit // Binary expression with Measures ( "maxPrice = 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), ( "maxPrice > 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), // Binary expression with Dimensions ( "customer_gender = 'FEMALE'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price > 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("gt".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price >= 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("gte".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("gte".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price < 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("lt".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("lt".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price <= 5".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("lte".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("lte".to_string()), + values: Some(vec!["5".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price = -1".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["-1".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("equals".to_string()), + values: Some(vec!["-1".to_string()]), + }, + )), + ]), None, ), ( "taxful_total_price <> -1".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("notEquals".to_string()), - values: Some(vec!["-1".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string(), + ), + operator: Some("notEquals".to_string()), + values: Some(vec!["-1".to_string()]), + }, + )), + ]), None, ), // IN ( "customer_gender IN ('FEMALE', 'MALE')".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string(), "MALE".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string(), "MALE".to_string()]), + }, + )), + ]), None, ), ( "customer_gender NOT IN ('FEMALE', 'MALE')".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notEquals".to_string()), - values: Some(vec!["FEMALE".to_string(), "MALE".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notEquals".to_string()), + values: Some(vec!["FEMALE".to_string(), "MALE".to_string()]), + }, + )), + ]), None, ), // NULL ( "customer_gender IS NULL".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notSet".to_string()), + values: None, + }, + )), + ]), None, ), ( "customer_gender IS NOT NULL".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + }, + )), + ]), None, ), // Date @@ -3328,90 +3401,106 @@ limit // LIKE ( "customer_gender LIKE 'female'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + }, + )), + ]), None, ), ( "customer_gender LIKE 'female%'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("startsWith".to_string()), + values: Some(vec!["female".to_string()]), + }, + )), + ]), None, ), ( "customer_gender LIKE '%female'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("endsWith".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("endsWith".to_string()), + values: Some(vec!["female".to_string()]), + }, + )), + ]), None, ), ( "customer_gender LIKE '%female%'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["female".to_string()]), + }, + )), + ]), None, ), ( "customer_gender NOT LIKE 'male'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notEquals".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notEquals".to_string()), + values: Some(vec!["male".to_string()]), + }, + )), + ]), None, ), ( "customer_gender NOT LIKE 'male%'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notStartsWith".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notStartsWith".to_string()), + values: Some(vec!["male".to_string()]), + }, + )), + ]), None, ), ( "customer_gender NOT LIKE '%male'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notEndsWith".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notEndsWith".to_string()), + values: Some(vec!["male".to_string()]), + }, + )), + ]), None, ), ( "customer_gender NOT LIKE '%male%'".to_string(), - Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notContains".to_string()), + values: Some(vec!["male".to_string()]), + }, + )), + ]), None, ), // Segment @@ -3527,191 +3616,174 @@ limit ( "customer_gender = 'FEMALE' AND customer_gender = 'MALE'".to_string(), vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - } - ], - ), - ( - "customer_gender = 'FEMALE' OR customer_gender = 'MALE'".to_string(), - vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), operator: Some("equals".to_string()), values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), operator: Some("equals".to_string()), values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - }) + } + )) + ], + ), + ( + "customer_gender = 'FEMALE' OR customer_gender = 'MALE'".to_string(), + vec![V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["MALE".to_string()]), + } + ))) ]), - and: None, - }], + }))], ), ( "customer_gender = 'FEMALE' AND customer_gender = 'MALE' AND customer_gender = 'UNKNOWN'".to_string(), vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["UNKNOWN".to_string()]), - or: None, - and: None, - } - ], - ), - ( - "customer_gender = 'FEMALE' OR customer_gender = 'MALE' OR customer_gender = 'UNKNOWN'".to_string(), - vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), operator: Some("equals".to_string()), values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), operator: Some("equals".to_string()), values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), operator: Some("equals".to_string()), values: Some(vec!["UNKNOWN".to_string()]), - or: None, - and: None, - }) + } + )) + ], + ), + ( + "customer_gender = 'FEMALE' OR customer_gender = 'MALE' OR customer_gender = 'UNKNOWN'".to_string(), + vec![V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["MALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["UNKNOWN".to_string()]), + } + ))) ]), - and: None, - }], + }))], ), ( "customer_gender = 'FEMALE' OR (customer_gender = 'MALE' AND taxful_total_price > 5)".to_string(), - vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, + vec![V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, - and: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }) - ]), - }) + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalAnd(Box::new( + V1LoadRequestQueryFilterLogicalAnd { + and: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["MALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["5".to_string()]), + } + ))) + ]), + } + ))) ]), - and: None, - }], + }))], ), ( "customer_gender = 'FEMALE' OR (customer_gender = 'MALE' AND taxful_total_price > 5 AND taxful_total_price < 100)".to_string(), - vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, + vec![V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["FEMALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["FEMALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalAnd(Box::new( + V1LoadRequestQueryFilterLogicalAnd { and: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["MALE".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("lt".to_string()), - values: Some(vec!["100".to_string()]), - or: None, - and: None, - }) + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["MALE".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["5".to_string()]), + } + ))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), + operator: Some("lt".to_string()), + values: Some(vec!["100".to_string()]), + } + ))) ]), - }) + }))) ]), - and: None, - }] + }))] ), ]; @@ -4485,13 +4557,15 @@ limit dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), limit: Some(1000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["male".to_string()]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -6905,13 +6979,15 @@ ORDER BY segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["100".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["100".to_string()]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -6996,20 +7072,20 @@ ORDER BY dimensions: Some(vec![]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("gt".to_string()), - values: Some(vec!["100".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("lt".to_string()), - values: Some(vec!["150".to_string()]), - or: None, - and: None, - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("gt".to_string()), + values: Some(vec!["100".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("lt".to_string()), + values: Some(vec!["150".to_string()]), + } + )) ]), ungrouped: Some(true), ..Default::default() @@ -7036,7 +7112,13 @@ ORDER BY .filters .unwrap_or_default(); let filter_vals = if filters.len() > 0 { - filters[0].values.clone() + let filter = &filters[0]; + match filter { + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(filter) => { + filter.values.clone() + } + _ => None, + } } else { None }; @@ -7048,13 +7130,15 @@ ORDER BY dimensions: Some(vec![]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("afterOrOnDate".to_string()), - values: filter_vals, - or: None, - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("afterOrOnDate".to_string()), + values: filter_vals, + } + )), + ]), ..Default::default() } ) @@ -7129,13 +7213,15 @@ ORDER BY segments: Some(vec![]), order: Some(vec![]), limit: Some(1000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["fem".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["fem".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -7295,13 +7381,15 @@ ORDER BY vec!["dim4".to_string(), "asc".to_string(),], vec!["pivot_grouping".to_string(), "asc".to_string(),], ]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("WideCube.dim1".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["foo".to_string()]), - or: None, - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("WideCube.dim1".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["foo".to_string()]), + } + )), + ]), ..Default::default() } ); @@ -7645,13 +7733,15 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(10), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["female".to_string()]), + } + )), + ]), ungrouped: Some(true), ..Default::default() } @@ -7676,28 +7766,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(10), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }) - ]), - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notContains".to_string()), + values: Some(vec!["female".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )) + ]), + } + )), + ]), ungrouped: Some(true), ..Default::default() } @@ -7731,20 +7825,24 @@ ORDER BY "source"."str0" ASC order: Some(vec![]), limit: Some(10), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("gte".to_string()), - values: Some(vec!["1".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.taxful_total_price".to_string()), - operator: Some("lte".to_string()), - values: Some(vec!["2".to_string()]), - or: None, - and: None, - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string() + ), + operator: Some("gte".to_string()), + values: Some(vec!["1".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price".to_string() + ), + operator: Some("lte".to_string()), + values: Some(vec!["2".to_string()]), + } + )) ]), ungrouped: Some(true), ..Default::default() @@ -7770,32 +7868,34 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(10), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("lt".to_string()), - values: Some(vec!["1".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("gt".to_string()), - values: Some(vec!["2".to_string()]), - or: None, - and: None, - }) - ]), - and: None, - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("lt".to_string()), + values: Some(vec!["1".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("gt".to_string()), + values: Some(vec!["2".to_string()]), + }) + )) + ]), + } + )), + ]), ungrouped: Some(true), ..Default::default() } @@ -8042,13 +8142,15 @@ ORDER BY "source"."str0" ASC date_range: None, }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["test".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("startsWith".to_string()), + values: Some(vec!["test".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -8729,13 +8831,15 @@ ORDER BY "source"."str0" ASC "desc".to_string() ]]), limit: Some(100000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["test".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notContains".to_string()), + values: Some(vec!["test".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -8924,16 +9028,18 @@ ORDER BY "source"."str0" ASC "desc".to_string() ]]), limit: Some(100000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("equals".to_string()), - values: Some(vec![ - "2022-06-06T13:30:46.000Z".to_string(), - "2022-06-06T13:30:47.000Z".to_string() - ]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("equals".to_string()), + values: Some(vec![ + "2022-06-06T13:30:46.000Z".to_string(), + "2022-06-06T13:30:47.000Z".to_string() + ]), + } + )) + ]), ..Default::default() } ); @@ -9115,13 +9221,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["f".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("startsWith".to_string()), + values: Some(vec!["f".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9154,13 +9262,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("endsWith".to_string()), - values: Some(vec!["le".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("endsWith".to_string()), + values: Some(vec!["le".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9197,13 +9307,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["al".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["al".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9242,20 +9354,20 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["al".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }, + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notContains".to_string()), + values: Some(vec!["al".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), ]), ..Default::default() } @@ -9292,13 +9404,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["1".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("startsWith".to_string()), + values: Some(vec!["1".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9334,13 +9448,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("endsWith".to_string()), - values: Some(vec!["23".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("endsWith".to_string()), + values: Some(vec!["23".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9380,13 +9496,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["45".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["45".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -9428,20 +9546,20 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["67".to_string()]), - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }, + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("notContains".to_string()), + values: Some(vec!["67".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.maxPrice".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), ]), ..Default::default() } @@ -9670,13 +9788,15 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string(), "male".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string(), "male".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -10041,28 +10161,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["el".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("contains".to_string()), + values: Some(vec!["el".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10099,28 +10223,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notContains".to_string()), - values: Some(vec!["ale".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notContains".to_string()), + values: Some(vec!["ale".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10157,28 +10285,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("startsWith".to_string()), - values: Some(vec!["fe".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("startsWith".to_string()), + values: Some(vec!["fe".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10215,28 +10347,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notStartsWith".to_string()), - values: Some(vec!["fe".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notStartsWith".to_string()), + values: Some(vec!["fe".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10273,28 +10409,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("endsWith".to_string()), - values: Some(vec!["ale".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("endsWith".to_string()), + values: Some(vec!["ale".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10331,28 +10471,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notEndsWith".to_string()), - values: Some(vec!["ale".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notEndsWith".to_string()), + values: Some(vec!["ale".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.customer_gender".to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10411,49 +10555,49 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, - and: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("gte".to_string()), - values: Some(vec!["500".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("lte".to_string()), - values: Some(vec!["10000".to_string()]), - or: None, - and: None, - }), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalAnd(Box::new( + V1LoadRequestQueryFilterLogicalAnd { + and: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("gte".to_string()), + values: Some(vec!["500".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("lte".to_string()), + values: Some(vec!["10000".to_string()]), + }) + )), ]), - }), - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + }))), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10491,32 +10635,34 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("notEquals".to_string()), - values: Some(vec!["1".to_string(), "1.1".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some( - "KibanaSampleDataEcommerce.taxful_total_price".to_string() - ), - operator: Some("notSet".to_string()), - values: None, - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("notEquals".to_string()), + values: Some(vec!["1".to_string(), "1.1".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.taxful_total_price" + .to_string() + ), + operator: Some("notSet".to_string()), + values: None, + }) + )), + ]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -10797,13 +10943,15 @@ ORDER BY "source"."str0" ASC ])) }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + ]), ..Default::default() } ) @@ -10852,13 +11000,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + ]), ..Default::default() } ) @@ -10897,16 +11047,18 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(10001), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("equals".to_string()), - values: Some(vec![ - "2019-01-17T15:25:48.000Z".to_string(), - "2019-09-09T00:00:00.000Z".to_string(), - ]), - or: None, - and: None - },]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("equals".to_string()), + values: Some(vec![ + "2019-01-17T15:25:48.000Z".to_string(), + "2019-09-09T00:00:00.000Z".to_string(), + ]), + } + )), + ]), ..Default::default() } ) @@ -11016,13 +11168,15 @@ ORDER BY "source"."str0" ASC "asc".to_string(), ]]), limit: Some(1000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("contains".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("contains".to_string()), + values: Some(vec!["male".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -11065,13 +11219,15 @@ ORDER BY "source"."str0" ASC "asc".to_string(), ]]), limit: Some(1000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notStartsWith".to_string()), - values: Some(vec!["test".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notStartsWith".to_string()), + values: Some(vec!["test".to_string()]), + } + )) + ]), ..Default::default() } ); @@ -11114,13 +11270,15 @@ ORDER BY "source"."str0" ASC "asc".to_string(), ]]), limit: Some(1000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("notEndsWith".to_string()), - values: Some(vec!["known".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("notEndsWith".to_string()), + values: Some(vec!["known".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -11514,13 +11672,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.count".to_string()), - operator: Some("lt".to_string()), - values: Some(vec!["10".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.count".to_string()), + operator: Some("lt".to_string()), + values: Some(vec!["10".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -12639,13 +12799,15 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some(filter_operator.to_string()), - values: Some(vec![filter_value.to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some(filter_operator.to_string()), + values: Some(vec![filter_value.to_string()]), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -13977,13 +14139,15 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(25000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("afterOrOnDate".to_string()), - values: Some(vec!["2020-01-02T00:00:00.000Z".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.order_date".to_string()), + operator: Some("afterOrOnDate".to_string()), + values: Some(vec!["2020-01-02T00:00:00.000Z".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -14070,28 +14234,32 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), order: Some(vec![]), limit: Some(25000), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("beforeDate".to_string()), - values: Some(vec!["2019-01-01T00:00:00.000Z".to_string()]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("afterOrOnDate".to_string()), - values: Some(vec!["2019-01-02T00:00:00.000Z".to_string()]), - or: None, - and: None, - }), - ]), - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("beforeDate".to_string()), + values: Some(vec!["2019-01-01T00:00:00.000Z".to_string()]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("afterOrOnDate".to_string()), + values: Some(vec!["2019-01-02T00:00:00.000Z".to_string()]), + }) + )), + ]), + } + )) + ]), ..Default::default() } ) @@ -15049,13 +15217,15 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), ]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.notes".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["HHHH-444JJJ\\Admin".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.notes".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["HHHH-444JJJ\\Admin".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -15296,13 +15466,15 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), dimensions: Some(vec![]), segments: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("NumberCube.someNumber".into()), - operator: Some("equals".into()), - values: Some((1..=N).map(|x| x.to_string()).collect()), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("NumberCube.someNumber".into()), + operator: Some("equals".into()), + values: Some((1..=N).map(|x| x.to_string()).collect()), + } + )) + ]), ungrouped: Some(true), ..Default::default() } @@ -15342,34 +15514,38 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), date_range: None }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2019-01-01 00:00:00.0".to_string(), - "2020-01-01 00:00:00.0".to_string(), - ]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2021-01-01 00:00:00.0".to_string(), - "2022-01-01 00:00:00.0".to_string(), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2019-01-01 00:00:00.0".to_string(), + "2020-01-01 00:00:00.0".to_string(), + ]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2021-01-01 00:00:00.0".to_string(), + "2022-01-01 00:00:00.0".to_string(), + ]), + }) + )), ]), - or: None, - and: None, - }), - ]), - and: None - }]), + } + )) + ]), ..Default::default() } ) @@ -15463,64 +15639,74 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), date_range: None }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: Some(vec![ - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2019-01-01 00:00:00.000".to_string(), - "2019-03-31 23:59:59.999".to_string(), - ]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2020-01-01 00:00:00.000".to_string(), - "2020-03-31 23:59:59.999".to_string(), - ]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2021-01-01 00:00:00.000".to_string(), - "2021-03-31 23:59:59.999".to_string(), - ]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2022-01-01 00:00:00.000".to_string(), - "2022-03-31 23:59:59.999".to_string(), - ]), - or: None, - and: None, - }), - json!(V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.order_date".to_string()), - operator: Some("inDateRange".to_string()), - values: Some(vec![ - "2023-01-01 00:00:00.000".to_string(), - "2023-03-31 23:59:59.999".to_string(), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new( + V1LoadRequestQueryFilterLogicalOr { + or: Some(vec![ + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2019-01-01 00:00:00.000".to_string(), + "2019-03-31 23:59:59.999".to_string(), + ]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2020-01-01 00:00:00.000".to_string(), + "2020-03-31 23:59:59.999".to_string(), + ]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2021-01-01 00:00:00.000".to_string(), + "2021-03-31 23:59:59.999".to_string(), + ]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2022-01-01 00:00:00.000".to_string(), + "2022-03-31 23:59:59.999".to_string(), + ]), + }) + )), + json!(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some( + "KibanaSampleDataEcommerce.order_date".to_string() + ), + operator: Some("inDateRange".to_string()), + values: Some(vec![ + "2023-01-01 00:00:00.000".to_string(), + "2023-03-31 23:59:59.999".to_string(), + ]), + }) + )), ]), - or: None, - and: None, - }), - ]), - and: None - }]), + } + )) + ]), ..Default::default() } ) @@ -15935,24 +16121,24 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), }]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec![ - "male".to_string(), - "female".to_string(), - "other".to_string() - ]), - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None - }, + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec![ + "male".to_string(), + "female".to_string(), + "other".to_string() + ]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )), ]), ..Default::default() } @@ -16226,13 +16412,15 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), ])) }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.sumPrice".to_string()), - operator: Some("gte".to_string()), - values: Some(vec!["5".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.sumPrice".to_string()), + operator: Some("gte".to_string()), + values: Some(vec!["5".to_string()]), + } + )) + ]), ..Default::default() } ) diff --git a/rust/cubesql/cubesql/src/compile/rewrite/converter.rs b/rust/cubesql/cubesql/src/compile/rewrite/converter.rs index dc65029915143..dace2a2aca068 100644 --- a/rust/cubesql/cubesql/src/compile/rewrite/converter.rs +++ b/rust/cubesql/cubesql/src/compile/rewrite/converter.rs @@ -38,7 +38,9 @@ use crate::{ CubeError, }; use cubeclient::models::{ - V1LoadRequestQuery, V1LoadRequestQueryFilterItem, V1LoadRequestQueryTimeDimension, + V1LoadRequestQuery, V1LoadRequestQueryFilterBase, V1LoadRequestQueryFilterItem, + V1LoadRequestQueryFilterLogicalAnd, V1LoadRequestQueryFilterLogicalOr, + V1LoadRequestQueryTimeDimension, }; use datafusion::{ arrow::datatypes::{DataType, TimeUnit}, @@ -1771,18 +1773,14 @@ impl LanguageToLogicalPlanConverter { )?; match op.as_str() { "and" => { - result.push(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, - or: None, + result.push(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalAnd(Box::new(V1LoadRequestQueryFilterLogicalAnd { and: Some( filters .into_iter() .map(|f| serde_json::json!(f)) .collect(), ), - }); + }))); segments_result.extend(segments); if change_user.is_some() { @@ -1790,18 +1788,14 @@ impl LanguageToLogicalPlanConverter { } } "or" => { - result.push(V1LoadRequestQueryFilterItem { - member: None, - operator: None, - values: None, + result.push(V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterLogicalOr(Box::new(V1LoadRequestQueryFilterLogicalOr { or: Some( filters .into_iter() .map(|f| serde_json::json!(f)) .collect(), ), - and: None, - }); + }))); if !segments.is_empty() { return Err(CubeError::internal( "Can't use OR operator with segments".to_string(), @@ -1843,17 +1837,19 @@ impl LanguageToLogicalPlanConverter { query_time_dimensions.push(dimension); } } else { - result.push(V1LoadRequestQueryFilterItem { - member: Some(member), - operator: Some(op), - values: if !values.is_empty() { - Some(values) - } else { - None - }, - or: None, - and: None, - }); + result.push( + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase( + Box::new(V1LoadRequestQueryFilterBase { + member: Some(member), + operator: Some(op), + values: if !values.is_empty() { + Some(values) + } else { + None + }, + }), + ), + ); } } LogicalPlanLanguage::SegmentMember(params) => { diff --git a/rust/cubesql/cubesql/src/compile/test/test_cube_join.rs b/rust/cubesql/cubesql/src/compile/test/test_cube_join.rs index 7294609b48e68..ef2d0a63d2e9a 100644 --- a/rust/cubesql/cubesql/src/compile/test/test_cube_join.rs +++ b/rust/cubesql/cubesql/src/compile/test/test_cube_join.rs @@ -1,5 +1,6 @@ use cubeclient::models::{ - V1LoadRequestQuery, V1LoadRequestQueryFilterItem, V1LoadRequestQueryTimeDimension, + V1LoadRequestQuery, V1LoadRequestQueryFilterBase, V1LoadRequestQueryFilterItem, + V1LoadRequestQueryTimeDimension, }; use pretty_assertions::assert_eq; use serde_json::json; @@ -208,13 +209,15 @@ async fn test_join_three_cubes_split() { date_range: None }]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["true".to_string()]), - or: None, - and: None - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["true".to_string()]), + } + )) + ]), ..Default::default() } ) @@ -249,20 +252,20 @@ async fn test_join_two_subqueries_with_filter_order_limit() { "asc".to_string(), ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["true".to_string()]), - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["true".to_string()]), + } + )) ]), ..Default::default() } @@ -304,20 +307,20 @@ async fn test_join_three_subqueries_with_filter_order_limit_and_split() { "asc".to_string(), ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["true".to_string()]), - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["true".to_string()]), + } + )) ]), ..Default::default() } @@ -353,20 +356,20 @@ async fn test_join_subquery_and_table_with_filter_order_limit() { "asc".to_string(), ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["true".to_string()]), - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["true".to_string()]), + } + )) ]), ..Default::default() } @@ -408,20 +411,20 @@ async fn test_join_two_subqueries_and_table_with_filter_order_limit_and_split() "asc".to_string(), ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["true".to_string()]), - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["true".to_string()]), + } + )) ]), ..Default::default() } @@ -469,20 +472,20 @@ async fn test_join_two_subqueries_filter_push_down() { "asc".to_string(), ]]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["female".to_string()]), - or: None, - and: None - }, - V1LoadRequestQueryFilterItem { - member: Some("Logs.read".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None - } + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["female".to_string()]), + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("Logs.read".to_string()), + operator: Some("set".to_string()), + values: None, + } + )) ]), ..Default::default() } diff --git a/rust/cubesql/cubesql/src/compile/test/test_filters.rs b/rust/cubesql/cubesql/src/compile/test/test_filters.rs index a400253886f82..77daff4b29980 100644 --- a/rust/cubesql/cubesql/src/compile/test/test_filters.rs +++ b/rust/cubesql/cubesql/src/compile/test/test_filters.rs @@ -1,4 +1,6 @@ -use cubeclient::models::{V1LoadRequestQuery, V1LoadRequestQueryFilterItem}; +use cubeclient::models::{ + V1LoadRequestQuery, V1LoadRequestQueryFilterBase, V1LoadRequestQueryFilterItem, +}; use datafusion::physical_plan::displayable; use pretty_assertions::assert_eq; @@ -42,20 +44,20 @@ GROUP BY segments: Some(vec![]), order: Some(vec![]), filters: Some(vec![ - V1LoadRequestQueryFilterItem { - member: Some("MultiTypeCube.dim_date0".to_string()), - operator: Some("set".to_string()), - values: None, - or: None, - and: None, - }, - V1LoadRequestQueryFilterItem { - member: Some("MultiTypeCube.dim_date0".to_string()), - operator: Some("afterDate".to_string()), - values: Some(vec!["2019-01-01 00:00:00".to_string()]), - or: None, - and: None, - }, + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("MultiTypeCube.dim_date0".to_string()), + operator: Some("set".to_string()), + values: None, + } + )), + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("MultiTypeCube.dim_date0".to_string()), + operator: Some("afterDate".to_string()), + values: Some(vec!["2019-01-01 00:00:00".to_string()]), + } + )), ],), ..Default::default() } diff --git a/rust/cubesql/cubesql/src/compile/test/test_user_change.rs b/rust/cubesql/cubesql/src/compile/test/test_user_change.rs index ae2a8b2e171ef..3d65769e572cf 100644 --- a/rust/cubesql/cubesql/src/compile/test/test_user_change.rs +++ b/rust/cubesql/cubesql/src/compile/test/test_user_change.rs @@ -1,6 +1,8 @@ //! Tests that check user change via __user virtual column -use cubeclient::models::{V1LoadRequestQuery, V1LoadRequestQueryFilterItem}; +use cubeclient::models::{ + V1LoadRequestQuery, V1LoadRequestQueryFilterBase, V1LoadRequestQueryFilterItem, +}; use pretty_assertions::assert_eq; use crate::compile::{ @@ -143,13 +145,15 @@ async fn test_change_user_via_filter_and() { segments: Some(vec![]), dimensions: Some(vec![]), order: Some(vec![]), - filters: Some(vec![V1LoadRequestQueryFilterItem { - member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), - operator: Some("equals".to_string()), - values: Some(vec!["male".to_string()]), - or: None, - and: None, - }]), + filters: Some(vec![ + V1LoadRequestQueryFilterItem::V1LoadRequestQueryFilterBase(Box::new( + V1LoadRequestQueryFilterBase { + member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()), + operator: Some("equals".to_string()), + values: Some(vec!["male".to_string()]), + } + )) + ]), ..Default::default() } ) diff --git a/rust/cubesqlplanner/Cargo.lock b/rust/cubesqlplanner/Cargo.lock index e983f7b7d4135..ac78ac41b0c3a 100644 --- a/rust/cubesqlplanner/Cargo.lock +++ b/rust/cubesqlplanner/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -673,8 +673,8 @@ dependencies = [ "reqwest", "reqwest-middleware", "serde", - "serde_derive", "serde_json", + "serde_repr", "tokio", "url", "uuid 1.9.1", @@ -2569,6 +2569,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + [[package]] name = "serde_urlencoded" version = "0.7.1"