1use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8
9#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14#[serde(rename_all = "camelCase")]
15pub struct WorkspaceSku {
16 pub name: String,
18}
19
20impl WorkspaceSku {
21 #[cfg(any(test, feature = "test-support"))]
22 pub fn fixture() -> Self {
24 Self {
25 name: "test-workspace_sku".into(),
26 }
27 }
28}
29
30#[derive(Debug, Clone, Default, Serialize, Deserialize)]
35#[serde(rename_all = "camelCase")]
36pub struct WorkspaceProperties {
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub retention_in_days: Option<i32>,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub sku: Option<WorkspaceSku>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub public_network_access_for_ingestion: Option<String>,
48
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub public_network_access_for_query: Option<String>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub customer_id: Option<String>,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub provisioning_state: Option<String>,
60}
61
62impl WorkspaceProperties {
63 #[cfg(any(test, feature = "test-support"))]
64 pub fn fixture() -> Self {
66 Self {
67 retention_in_days: Some(100),
68 sku: Some(WorkspaceSku::fixture()),
69 public_network_access_for_ingestion: Some(
70 "test-public_network_access_for_ingestion".into(),
71 ),
72 public_network_access_for_query: Some("test-public_network_access_for_query".into()),
73 customer_id: Some("test-customer_id".into()),
74 provisioning_state: Some("test-provisioning_state".into()),
75 }
76 }
77}
78
79#[derive(Debug, Clone, Default, Serialize, Deserialize)]
84#[serde(rename_all = "camelCase")]
85pub struct Workspace {
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub id: Option<String>,
89
90 #[serde(skip_serializing_if = "Option::is_none")]
92 pub name: Option<String>,
93
94 #[serde(rename = "type")]
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub r#type: Option<String>,
98
99 pub location: String,
101
102 #[serde(default)]
104 #[serde(skip_serializing_if = "HashMap::is_empty")]
105 pub tags: HashMap<String, String>,
106
107 #[serde(skip_serializing_if = "Option::is_none")]
109 pub properties: Option<WorkspaceProperties>,
110}
111
112impl Workspace {
113 #[cfg(any(test, feature = "test-support"))]
114 pub fn fixture() -> Self {
116 Self {
117 id: Some("test-id".into()),
118 name: Some("test-workspace".into()),
119 r#type: Some("test-type".into()),
120 location: "test-location".into(),
121 tags: Default::default(),
122 properties: Some(WorkspaceProperties::fixture()),
123 }
124 }
125}
126
127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
132#[serde(rename_all = "camelCase")]
133pub struct WorkspaceListResult {
134 #[serde(default)]
136 #[serde(skip_serializing_if = "Vec::is_empty")]
137 pub value: Vec<Workspace>,
138}
139
140impl WorkspaceListResult {
141 #[cfg(any(test, feature = "test-support"))]
142 pub fn fixture() -> Self {
144 Self { value: vec![] }
145 }
146}
147
148#[derive(Debug, Clone, Default, Serialize, Deserialize)]
153#[serde(rename_all = "camelCase")]
154pub struct WorkspaceCreateRequest {
155 pub location: String,
157
158 #[serde(default)]
160 #[serde(skip_serializing_if = "HashMap::is_empty")]
161 pub tags: HashMap<String, String>,
162
163 #[serde(skip_serializing_if = "Option::is_none")]
165 pub properties: Option<WorkspaceProperties>,
166}
167
168impl WorkspaceCreateRequest {
169 #[cfg(any(test, feature = "test-support"))]
170 pub fn fixture() -> Self {
172 Self {
173 location: "test-location".into(),
174 tags: Default::default(),
175 properties: Some(WorkspaceProperties::fixture()),
176 }
177 }
178}
179
180#[derive(Debug, Clone, Default, Serialize, Deserialize)]
185#[serde(rename_all = "camelCase")]
186pub struct LogQueryBody {
187 pub query: String,
189
190 #[serde(skip_serializing_if = "Option::is_none")]
192 pub timespan: Option<String>,
193}
194
195impl LogQueryBody {
196 #[cfg(any(test, feature = "test-support"))]
197 pub fn fixture() -> Self {
199 Self {
200 query: "test-query".into(),
201 timespan: Some("test-timespan".into()),
202 }
203 }
204}
205
206#[derive(Debug, Clone, Default, Serialize, Deserialize)]
211#[serde(rename_all = "camelCase")]
212pub struct LogQueryColumn {
213 #[serde(skip_serializing_if = "Option::is_none")]
215 pub name: Option<String>,
216
217 #[serde(rename = "type")]
219 #[serde(skip_serializing_if = "Option::is_none")]
220 pub r#type: Option<String>,
221}
222
223impl LogQueryColumn {
224 #[cfg(any(test, feature = "test-support"))]
225 pub fn fixture() -> Self {
227 Self {
228 name: Some("test-log_query_column".into()),
229 r#type: Some("test-type".into()),
230 }
231 }
232}
233
234#[derive(Debug, Clone, Default, Serialize, Deserialize)]
239#[serde(rename_all = "camelCase")]
240pub struct LogQueryTable {
241 #[serde(skip_serializing_if = "Option::is_none")]
243 pub name: Option<String>,
244
245 #[serde(default)]
247 #[serde(skip_serializing_if = "Vec::is_empty")]
248 pub columns: Vec<LogQueryColumn>,
249
250 #[serde(default)]
252 #[serde(skip_serializing_if = "Vec::is_empty")]
253 pub rows: Vec<serde_json::Value>,
254}
255
256impl LogQueryTable {
257 #[cfg(any(test, feature = "test-support"))]
258 pub fn fixture() -> Self {
260 Self {
261 name: Some("test-log_query_table".into()),
262 columns: vec![],
263 rows: vec![],
264 }
265 }
266}
267
268#[derive(Debug, Clone, Default, Serialize, Deserialize)]
273#[serde(rename_all = "camelCase")]
274pub struct LogQueryResult {
275 #[serde(default)]
277 #[serde(skip_serializing_if = "Vec::is_empty")]
278 pub tables: Vec<LogQueryTable>,
279}
280
281impl LogQueryResult {
282 #[cfg(any(test, feature = "test-support"))]
283 pub fn fixture() -> Self {
285 Self { tables: vec![] }
286 }
287}
288
289#[derive(Debug, Clone, Default, Serialize, Deserialize)]
294#[serde(rename_all = "camelCase")]
295pub struct SavedSearchProperties {
296 #[serde(skip_serializing_if = "Option::is_none")]
298 pub display_name: Option<String>,
299
300 #[serde(skip_serializing_if = "Option::is_none")]
302 pub category: Option<String>,
303
304 #[serde(skip_serializing_if = "Option::is_none")]
306 pub query: Option<String>,
307
308 #[serde(skip_serializing_if = "Option::is_none")]
310 pub version: Option<i32>,
311}
312
313impl SavedSearchProperties {
314 #[cfg(any(test, feature = "test-support"))]
315 pub fn fixture() -> Self {
317 Self {
318 display_name: Some("test-display_name".into()),
319 category: Some("test-category".into()),
320 query: Some("test-query".into()),
321 version: Some(100),
322 }
323 }
324}
325
326#[derive(Debug, Clone, Default, Serialize, Deserialize)]
331#[serde(rename_all = "camelCase")]
332pub struct SavedSearch {
333 #[serde(skip_serializing_if = "Option::is_none")]
335 pub id: Option<String>,
336
337 #[serde(skip_serializing_if = "Option::is_none")]
339 pub name: Option<String>,
340
341 #[serde(skip_serializing_if = "Option::is_none")]
343 pub etag: Option<String>,
344
345 #[serde(skip_serializing_if = "Option::is_none")]
347 pub properties: Option<SavedSearchProperties>,
348}
349
350impl SavedSearch {
351 #[cfg(any(test, feature = "test-support"))]
352 pub fn fixture() -> Self {
354 Self {
355 id: Some("test-id".into()),
356 name: Some("test-saved_search".into()),
357 etag: Some("test-etag".into()),
358 properties: Some(SavedSearchProperties::fixture()),
359 }
360 }
361}
362
363#[derive(Debug, Clone, Default, Serialize, Deserialize)]
368#[serde(rename_all = "camelCase")]
369pub struct SavedSearchListResult {
370 #[serde(default)]
372 #[serde(skip_serializing_if = "Vec::is_empty")]
373 pub value: Vec<SavedSearch>,
374}
375
376impl SavedSearchListResult {
377 #[cfg(any(test, feature = "test-support"))]
378 pub fn fixture() -> Self {
380 Self { value: vec![] }
381 }
382}