box_open_sdk/models/schemas/
query.rs1#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4pub struct QueryAncestorReference {
5 pub id: String,
6 pub r#type: String,
7}
8
9#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10pub struct QueryInsightEntry {
11 pub key: Vec<String>,
12 pub r#type: QueryInsightEntryType,
13 pub metrics: std::collections::HashMap<String, QueryInsightMetricResult>,
14}
15
16#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
17pub struct QueryInsightMetricResult {
18 pub r#type: String,
19 pub values: std::collections::HashMap<String, f64>,
20}
21
22#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
23pub struct QueryInsights {
24 pub insights: Vec<QueryInsightEntry>,
25}
26
27#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
28pub struct QueryInsightsGroupBy {
29 pub field: String,
30 #[serde(default, skip_serializing_if = "Option::is_none")]
31 pub bucket_limit: Option<i64>,
32}
33
34#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
35pub struct QueryInsightsMetricDefinition {
36 pub r#type: QueryInsightsMetricDefinitionType,
37 pub field: String,
38}
39
40#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
41pub struct QueryInsightsRequestBody {
42 pub query: QueryInsightsRequestBodyQuery,
43 pub metrics: std::collections::HashMap<String, QueryInsightsMetricDefinition>,
44}
45
46#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
47pub struct QueryOrderBy {
48 pub field_key: String,
49 pub direction: QueryOrderByDirection,
50}
51
52#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
53pub struct QueryRequestBody {
54 pub query: QueryRequestBodyQuery,
55 #[serde(default, skip_serializing_if = "Option::is_none")]
56 pub order_by: Option<Vec<QueryOrderBy>>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub limit: Option<i64>,
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub fields: Option<Vec<String>>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub marker: Option<String>,
63}
64
65#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
66pub struct QueryResultEntry {
67 pub id: String,
68 pub r#type: String,
69 #[serde(flatten)]
70 pub extra: std::collections::HashMap<String, serde_json::Value>,
71}
72
73#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
74pub struct QueryResults {
75 pub entries: Vec<QueryResultEntry>,
76 pub next_marker: Option<String>,
77 pub limit: i64,
78}
79
80#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
81#[serde(transparent)]
82pub struct QueryInsightEntryType(pub String);
83
84impl QueryInsightEntryType {
85 pub const GROUP: &'static str = "group";
86 pub const OVERALL: &'static str = "overall";
87 pub const OTHER: &'static str = "other";
88}
89
90#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
91#[serde(transparent)]
92pub struct QueryInsightsMetricDefinitionType(pub String);
93
94impl QueryInsightsMetricDefinitionType {
95 pub const SUM: &'static str = "sum";
96 pub const AVG: &'static str = "avg";
97 pub const MIN: &'static str = "min";
98 pub const MAX: &'static str = "max";
99 pub const COUNT: &'static str = "count";
100}
101
102#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
103pub struct QueryInsightsRequestBodyQuery {
104 pub predicate: String,
105 #[serde(default, skip_serializing_if = "Option::is_none")]
106 pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
108 pub ancestors: Option<Vec<QueryAncestorReference>>,
109 #[serde(default, skip_serializing_if = "Option::is_none")]
110 pub group_by: Option<Vec<QueryInsightsGroupBy>>,
111}
112
113#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
114#[serde(transparent)]
115pub struct QueryOrderByDirection(pub String);
116
117impl QueryOrderByDirection {
118 pub const ASC: &'static str = "asc";
119 pub const DESC: &'static str = "desc";
120}
121
122#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
123pub struct QueryRequestBodyQuery {
124 pub predicate: String,
125 #[serde(default, skip_serializing_if = "Option::is_none")]
126 pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
127 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub ancestors: Option<Vec<QueryAncestorReference>>,
129}