#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryAncestorReference {
pub id: String,
pub r#type: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightEntry {
pub key: Vec<String>,
pub r#type: QueryInsightEntryType,
pub metrics: std::collections::HashMap<String, QueryInsightMetricResult>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightMetricResult {
pub r#type: String,
pub values: std::collections::HashMap<String, f64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsights {
pub insights: Vec<QueryInsightEntry>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightsGroupBy {
pub field: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bucket_limit: Option<i64>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightsMetricDefinition {
pub r#type: QueryInsightsMetricDefinitionType,
pub field: String,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightsRequestBody {
pub query: QueryInsightsRequestBodyQuery,
pub metrics: std::collections::HashMap<String, QueryInsightsMetricDefinition>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryOrderBy {
pub field_key: String,
pub direction: QueryOrderByDirection,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryRequestBody {
pub query: QueryRequestBodyQuery,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_by: Option<Vec<QueryOrderBy>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryResultEntry {
pub id: String,
pub r#type: String,
#[serde(flatten)]
pub extra: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryResults {
pub entries: Vec<QueryResultEntry>,
pub next_marker: Option<String>,
pub limit: i64,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct QueryInsightEntryType(pub String);
impl QueryInsightEntryType {
pub const GROUP: &'static str = "group";
pub const OVERALL: &'static str = "overall";
pub const OTHER: &'static str = "other";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct QueryInsightsMetricDefinitionType(pub String);
impl QueryInsightsMetricDefinitionType {
pub const SUM: &'static str = "sum";
pub const AVG: &'static str = "avg";
pub const MIN: &'static str = "min";
pub const MAX: &'static str = "max";
pub const COUNT: &'static str = "count";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryInsightsRequestBodyQuery {
pub predicate: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ancestors: Option<Vec<QueryAncestorReference>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_by: Option<Vec<QueryInsightsGroupBy>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct QueryOrderByDirection(pub String);
impl QueryOrderByDirection {
pub const ASC: &'static str = "asc";
pub const DESC: &'static str = "desc";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct QueryRequestBodyQuery {
pub predicate: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ancestors: Option<Vec<QueryAncestorReference>>,
}