datadog_api_client/datadogV1/model/
model_scatter_plot_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 ScatterPlotRequest {
14 #[serde(rename = "aggregator")]
16 pub aggregator: Option<crate::datadogV1::model::ScatterplotWidgetAggregator>,
17 #[serde(rename = "apm_query")]
19 pub apm_query: Option<crate::datadogV1::model::LogQueryDefinition>,
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 = "rum_query")]
40 pub rum_query: Option<crate::datadogV1::model::LogQueryDefinition>,
41 #[serde(rename = "security_query")]
43 pub security_query: Option<crate::datadogV1::model::LogQueryDefinition>,
44 #[serde(flatten)]
45 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
46 #[serde(skip)]
47 #[serde(default)]
48 pub(crate) _unparsed: bool,
49}
50
51impl ScatterPlotRequest {
52 pub fn new() -> ScatterPlotRequest {
53 ScatterPlotRequest {
54 aggregator: None,
55 apm_query: None,
56 event_query: None,
57 log_query: None,
58 network_query: None,
59 process_query: None,
60 profile_metrics_query: None,
61 q: None,
62 rum_query: None,
63 security_query: None,
64 additional_properties: std::collections::BTreeMap::new(),
65 _unparsed: false,
66 }
67 }
68
69 pub fn aggregator(
70 mut self,
71 value: crate::datadogV1::model::ScatterplotWidgetAggregator,
72 ) -> Self {
73 self.aggregator = Some(value);
74 self
75 }
76
77 pub fn apm_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
78 self.apm_query = Some(value);
79 self
80 }
81
82 pub fn event_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
83 self.event_query = Some(value);
84 self
85 }
86
87 pub fn log_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
88 self.log_query = Some(value);
89 self
90 }
91
92 pub fn network_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
93 self.network_query = Some(value);
94 self
95 }
96
97 pub fn process_query(mut self, value: crate::datadogV1::model::ProcessQueryDefinition) -> Self {
98 self.process_query = Some(value);
99 self
100 }
101
102 pub fn profile_metrics_query(
103 mut self,
104 value: crate::datadogV1::model::LogQueryDefinition,
105 ) -> Self {
106 self.profile_metrics_query = Some(value);
107 self
108 }
109
110 pub fn q(mut self, value: String) -> Self {
111 self.q = Some(value);
112 self
113 }
114
115 pub fn rum_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
116 self.rum_query = Some(value);
117 self
118 }
119
120 pub fn security_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
121 self.security_query = Some(value);
122 self
123 }
124
125 pub fn additional_properties(
126 mut self,
127 value: std::collections::BTreeMap<String, serde_json::Value>,
128 ) -> Self {
129 self.additional_properties = value;
130 self
131 }
132}
133
134impl Default for ScatterPlotRequest {
135 fn default() -> Self {
136 Self::new()
137 }
138}
139
140impl<'de> Deserialize<'de> for ScatterPlotRequest {
141 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
142 where
143 D: Deserializer<'de>,
144 {
145 struct ScatterPlotRequestVisitor;
146 impl<'a> Visitor<'a> for ScatterPlotRequestVisitor {
147 type Value = ScatterPlotRequest;
148
149 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
150 f.write_str("a mapping")
151 }
152
153 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
154 where
155 M: MapAccess<'a>,
156 {
157 let mut aggregator: Option<crate::datadogV1::model::ScatterplotWidgetAggregator> =
158 None;
159 let mut apm_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
160 let mut event_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
161 let mut log_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
162 let mut network_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
163 let mut process_query: Option<crate::datadogV1::model::ProcessQueryDefinition> =
164 None;
165 let mut profile_metrics_query: Option<crate::datadogV1::model::LogQueryDefinition> =
166 None;
167 let mut q: Option<String> = None;
168 let mut rum_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
169 let mut security_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
170 let mut additional_properties: std::collections::BTreeMap<
171 String,
172 serde_json::Value,
173 > = std::collections::BTreeMap::new();
174 let mut _unparsed = false;
175
176 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
177 match k.as_str() {
178 "aggregator" => {
179 if v.is_null() {
180 continue;
181 }
182 aggregator = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
183 if let Some(ref _aggregator) = aggregator {
184 match _aggregator {
185 crate::datadogV1::model::ScatterplotWidgetAggregator::UnparsedObject(_aggregator) => {
186 _unparsed = true;
187 },
188 _ => {}
189 }
190 }
191 }
192 "apm_query" => {
193 if v.is_null() {
194 continue;
195 }
196 apm_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
197 }
198 "event_query" => {
199 if v.is_null() {
200 continue;
201 }
202 event_query =
203 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
204 }
205 "log_query" => {
206 if v.is_null() {
207 continue;
208 }
209 log_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
210 }
211 "network_query" => {
212 if v.is_null() {
213 continue;
214 }
215 network_query =
216 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
217 }
218 "process_query" => {
219 if v.is_null() {
220 continue;
221 }
222 process_query =
223 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
224 }
225 "profile_metrics_query" => {
226 if v.is_null() {
227 continue;
228 }
229 profile_metrics_query =
230 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
231 }
232 "q" => {
233 if v.is_null() {
234 continue;
235 }
236 q = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
237 }
238 "rum_query" => {
239 if v.is_null() {
240 continue;
241 }
242 rum_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
243 }
244 "security_query" => {
245 if v.is_null() {
246 continue;
247 }
248 security_query =
249 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
250 }
251 &_ => {
252 if let Ok(value) = serde_json::from_value(v.clone()) {
253 additional_properties.insert(k, value);
254 }
255 }
256 }
257 }
258
259 let content = ScatterPlotRequest {
260 aggregator,
261 apm_query,
262 event_query,
263 log_query,
264 network_query,
265 process_query,
266 profile_metrics_query,
267 q,
268 rum_query,
269 security_query,
270 additional_properties,
271 _unparsed,
272 };
273
274 Ok(content)
275 }
276 }
277
278 deserializer.deserialize_any(ScatterPlotRequestVisitor)
279 }
280}