datadog_api_client/datadogV1/model/
model_query_value_widget_request.rs1use serde::de::{Error, MapAccess, Visitor};
5use serde::{Deserialize, Deserializer, Serialize};
6use serde_with::skip_serializing_none;
7use std::fmt::{self, Formatter};
8
9#[non_exhaustive]
11#[skip_serializing_none]
12#[derive(Clone, Debug, PartialEq, Serialize)]
13pub struct QueryValueWidgetRequest {
14 #[serde(rename = "aggregator")]
16 pub aggregator: Option<crate::datadogV1::model::WidgetAggregator>,
17 #[serde(rename = "apm_query")]
19 pub apm_query: Option<crate::datadogV1::model::LogQueryDefinition>,
20 #[serde(rename = "audit_query")]
22 pub audit_query: Option<crate::datadogV1::model::LogQueryDefinition>,
23 #[serde(rename = "conditional_formats")]
25 pub conditional_formats: Option<Vec<crate::datadogV1::model::WidgetConditionalFormat>>,
26 #[serde(rename = "event_query")]
28 pub event_query: Option<crate::datadogV1::model::LogQueryDefinition>,
29 #[serde(rename = "formulas")]
31 pub formulas: Option<Vec<crate::datadogV1::model::WidgetFormula>>,
32 #[serde(rename = "log_query")]
34 pub log_query: Option<crate::datadogV1::model::LogQueryDefinition>,
35 #[serde(rename = "network_query")]
37 pub network_query: Option<crate::datadogV1::model::LogQueryDefinition>,
38 #[serde(rename = "process_query")]
40 pub process_query: Option<crate::datadogV1::model::ProcessQueryDefinition>,
41 #[serde(rename = "profile_metrics_query")]
43 pub profile_metrics_query: Option<crate::datadogV1::model::LogQueryDefinition>,
44 #[serde(rename = "q")]
46 pub q: Option<String>,
47 #[serde(rename = "queries")]
49 pub queries: Option<Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>>,
50 #[serde(rename = "response_format")]
52 pub response_format: Option<crate::datadogV1::model::FormulaAndFunctionResponseFormat>,
53 #[serde(rename = "rum_query")]
55 pub rum_query: Option<crate::datadogV1::model::LogQueryDefinition>,
56 #[serde(rename = "security_query")]
58 pub security_query: Option<crate::datadogV1::model::LogQueryDefinition>,
59 #[serde(flatten)]
60 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
61 #[serde(skip)]
62 #[serde(default)]
63 pub(crate) _unparsed: bool,
64}
65
66impl QueryValueWidgetRequest {
67 pub fn new() -> QueryValueWidgetRequest {
68 QueryValueWidgetRequest {
69 aggregator: None,
70 apm_query: None,
71 audit_query: None,
72 conditional_formats: None,
73 event_query: None,
74 formulas: None,
75 log_query: None,
76 network_query: None,
77 process_query: None,
78 profile_metrics_query: None,
79 q: None,
80 queries: None,
81 response_format: None,
82 rum_query: None,
83 security_query: None,
84 additional_properties: std::collections::BTreeMap::new(),
85 _unparsed: false,
86 }
87 }
88
89 pub fn aggregator(mut self, value: crate::datadogV1::model::WidgetAggregator) -> Self {
90 self.aggregator = Some(value);
91 self
92 }
93
94 pub fn apm_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
95 self.apm_query = Some(value);
96 self
97 }
98
99 pub fn audit_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
100 self.audit_query = Some(value);
101 self
102 }
103
104 pub fn conditional_formats(
105 mut self,
106 value: Vec<crate::datadogV1::model::WidgetConditionalFormat>,
107 ) -> Self {
108 self.conditional_formats = Some(value);
109 self
110 }
111
112 pub fn event_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
113 self.event_query = Some(value);
114 self
115 }
116
117 pub fn formulas(mut self, value: Vec<crate::datadogV1::model::WidgetFormula>) -> Self {
118 self.formulas = Some(value);
119 self
120 }
121
122 pub fn log_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
123 self.log_query = Some(value);
124 self
125 }
126
127 pub fn network_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
128 self.network_query = Some(value);
129 self
130 }
131
132 pub fn process_query(mut self, value: crate::datadogV1::model::ProcessQueryDefinition) -> Self {
133 self.process_query = Some(value);
134 self
135 }
136
137 pub fn profile_metrics_query(
138 mut self,
139 value: crate::datadogV1::model::LogQueryDefinition,
140 ) -> Self {
141 self.profile_metrics_query = Some(value);
142 self
143 }
144
145 pub fn q(mut self, value: String) -> Self {
146 self.q = Some(value);
147 self
148 }
149
150 pub fn queries(
151 mut self,
152 value: Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>,
153 ) -> Self {
154 self.queries = Some(value);
155 self
156 }
157
158 pub fn response_format(
159 mut self,
160 value: crate::datadogV1::model::FormulaAndFunctionResponseFormat,
161 ) -> Self {
162 self.response_format = Some(value);
163 self
164 }
165
166 pub fn rum_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
167 self.rum_query = Some(value);
168 self
169 }
170
171 pub fn security_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
172 self.security_query = Some(value);
173 self
174 }
175
176 pub fn additional_properties(
177 mut self,
178 value: std::collections::BTreeMap<String, serde_json::Value>,
179 ) -> Self {
180 self.additional_properties = value;
181 self
182 }
183}
184
185impl Default for QueryValueWidgetRequest {
186 fn default() -> Self {
187 Self::new()
188 }
189}
190
191impl<'de> Deserialize<'de> for QueryValueWidgetRequest {
192 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
193 where
194 D: Deserializer<'de>,
195 {
196 struct QueryValueWidgetRequestVisitor;
197 impl<'a> Visitor<'a> for QueryValueWidgetRequestVisitor {
198 type Value = QueryValueWidgetRequest;
199
200 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
201 f.write_str("a mapping")
202 }
203
204 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
205 where
206 M: MapAccess<'a>,
207 {
208 let mut aggregator: Option<crate::datadogV1::model::WidgetAggregator> = None;
209 let mut apm_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
210 let mut audit_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
211 let mut conditional_formats: Option<
212 Vec<crate::datadogV1::model::WidgetConditionalFormat>,
213 > = None;
214 let mut event_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
215 let mut formulas: Option<Vec<crate::datadogV1::model::WidgetFormula>> = None;
216 let mut log_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
217 let mut network_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
218 let mut process_query: Option<crate::datadogV1::model::ProcessQueryDefinition> =
219 None;
220 let mut profile_metrics_query: Option<crate::datadogV1::model::LogQueryDefinition> =
221 None;
222 let mut q: Option<String> = None;
223 let mut queries: Option<
224 Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>,
225 > = None;
226 let mut response_format: Option<
227 crate::datadogV1::model::FormulaAndFunctionResponseFormat,
228 > = None;
229 let mut rum_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
230 let mut security_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
231 let mut additional_properties: std::collections::BTreeMap<
232 String,
233 serde_json::Value,
234 > = std::collections::BTreeMap::new();
235 let mut _unparsed = false;
236
237 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
238 match k.as_str() {
239 "aggregator" => {
240 if v.is_null() {
241 continue;
242 }
243 aggregator = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
244 if let Some(ref _aggregator) = aggregator {
245 match _aggregator {
246 crate::datadogV1::model::WidgetAggregator::UnparsedObject(
247 _aggregator,
248 ) => {
249 _unparsed = true;
250 }
251 _ => {}
252 }
253 }
254 }
255 "apm_query" => {
256 if v.is_null() {
257 continue;
258 }
259 apm_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
260 }
261 "audit_query" => {
262 if v.is_null() {
263 continue;
264 }
265 audit_query =
266 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
267 }
268 "conditional_formats" => {
269 if v.is_null() {
270 continue;
271 }
272 conditional_formats =
273 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
274 }
275 "event_query" => {
276 if v.is_null() {
277 continue;
278 }
279 event_query =
280 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
281 }
282 "formulas" => {
283 if v.is_null() {
284 continue;
285 }
286 formulas = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
287 }
288 "log_query" => {
289 if v.is_null() {
290 continue;
291 }
292 log_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
293 }
294 "network_query" => {
295 if v.is_null() {
296 continue;
297 }
298 network_query =
299 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
300 }
301 "process_query" => {
302 if v.is_null() {
303 continue;
304 }
305 process_query =
306 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
307 }
308 "profile_metrics_query" => {
309 if v.is_null() {
310 continue;
311 }
312 profile_metrics_query =
313 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
314 }
315 "q" => {
316 if v.is_null() {
317 continue;
318 }
319 q = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
320 }
321 "queries" => {
322 if v.is_null() {
323 continue;
324 }
325 queries = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
326 }
327 "response_format" => {
328 if v.is_null() {
329 continue;
330 }
331 response_format =
332 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
333 if let Some(ref _response_format) = response_format {
334 match _response_format {
335 crate::datadogV1::model::FormulaAndFunctionResponseFormat::UnparsedObject(_response_format) => {
336 _unparsed = true;
337 },
338 _ => {}
339 }
340 }
341 }
342 "rum_query" => {
343 if v.is_null() {
344 continue;
345 }
346 rum_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
347 }
348 "security_query" => {
349 if v.is_null() {
350 continue;
351 }
352 security_query =
353 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
354 }
355 &_ => {
356 if let Ok(value) = serde_json::from_value(v.clone()) {
357 additional_properties.insert(k, value);
358 }
359 }
360 }
361 }
362
363 let content = QueryValueWidgetRequest {
364 aggregator,
365 apm_query,
366 audit_query,
367 conditional_formats,
368 event_query,
369 formulas,
370 log_query,
371 network_query,
372 process_query,
373 profile_metrics_query,
374 q,
375 queries,
376 response_format,
377 rum_query,
378 security_query,
379 additional_properties,
380 _unparsed,
381 };
382
383 Ok(content)
384 }
385 }
386
387 deserializer.deserialize_any(QueryValueWidgetRequestVisitor)
388 }
389}