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