datadog_api_client/datadogV1/model/
model_geomap_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 GeomapWidgetRequest {
14 #[serde(rename = "columns")]
16 pub columns: Option<Vec<crate::datadogV1::model::ListStreamColumn>>,
17 #[serde(rename = "formulas")]
19 pub formulas: Option<Vec<crate::datadogV1::model::WidgetFormula>>,
20 #[serde(rename = "log_query")]
22 pub log_query: Option<crate::datadogV1::model::LogQueryDefinition>,
23 #[serde(rename = "q")]
25 pub q: Option<String>,
26 #[serde(rename = "queries")]
28 pub queries: Option<Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>>,
29 #[serde(rename = "query")]
31 pub query: Option<crate::datadogV1::model::ListStreamQuery>,
32 #[serde(rename = "response_format")]
34 pub response_format: Option<crate::datadogV1::model::FormulaAndFunctionResponseFormat>,
35 #[serde(rename = "rum_query")]
37 pub rum_query: Option<crate::datadogV1::model::LogQueryDefinition>,
38 #[serde(rename = "security_query")]
40 pub security_query: Option<crate::datadogV1::model::LogQueryDefinition>,
41 #[serde(rename = "sort")]
43 pub sort: Option<crate::datadogV1::model::WidgetSortBy>,
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 GeomapWidgetRequest {
52 pub fn new() -> GeomapWidgetRequest {
53 GeomapWidgetRequest {
54 columns: None,
55 formulas: None,
56 log_query: None,
57 q: None,
58 queries: None,
59 query: None,
60 response_format: None,
61 rum_query: None,
62 security_query: None,
63 sort: None,
64 additional_properties: std::collections::BTreeMap::new(),
65 _unparsed: false,
66 }
67 }
68
69 pub fn columns(mut self, value: Vec<crate::datadogV1::model::ListStreamColumn>) -> Self {
70 self.columns = Some(value);
71 self
72 }
73
74 pub fn formulas(mut self, value: Vec<crate::datadogV1::model::WidgetFormula>) -> Self {
75 self.formulas = Some(value);
76 self
77 }
78
79 pub fn log_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
80 self.log_query = Some(value);
81 self
82 }
83
84 pub fn q(mut self, value: String) -> Self {
85 self.q = Some(value);
86 self
87 }
88
89 pub fn queries(
90 mut self,
91 value: Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>,
92 ) -> Self {
93 self.queries = Some(value);
94 self
95 }
96
97 pub fn query(mut self, value: crate::datadogV1::model::ListStreamQuery) -> Self {
98 self.query = Some(value);
99 self
100 }
101
102 pub fn response_format(
103 mut self,
104 value: crate::datadogV1::model::FormulaAndFunctionResponseFormat,
105 ) -> Self {
106 self.response_format = Some(value);
107 self
108 }
109
110 pub fn rum_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
111 self.rum_query = Some(value);
112 self
113 }
114
115 pub fn security_query(mut self, value: crate::datadogV1::model::LogQueryDefinition) -> Self {
116 self.security_query = Some(value);
117 self
118 }
119
120 pub fn sort(mut self, value: crate::datadogV1::model::WidgetSortBy) -> Self {
121 self.sort = 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 GeomapWidgetRequest {
135 fn default() -> Self {
136 Self::new()
137 }
138}
139
140impl<'de> Deserialize<'de> for GeomapWidgetRequest {
141 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
142 where
143 D: Deserializer<'de>,
144 {
145 struct GeomapWidgetRequestVisitor;
146 impl<'a> Visitor<'a> for GeomapWidgetRequestVisitor {
147 type Value = GeomapWidgetRequest;
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 columns: Option<Vec<crate::datadogV1::model::ListStreamColumn>> = None;
158 let mut formulas: Option<Vec<crate::datadogV1::model::WidgetFormula>> = None;
159 let mut log_query: Option<crate::datadogV1::model::LogQueryDefinition> = None;
160 let mut q: Option<String> = None;
161 let mut queries: Option<
162 Vec<crate::datadogV1::model::FormulaAndFunctionQueryDefinition>,
163 > = None;
164 let mut query: Option<crate::datadogV1::model::ListStreamQuery> = None;
165 let mut response_format: Option<
166 crate::datadogV1::model::FormulaAndFunctionResponseFormat,
167 > = 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 sort: Option<crate::datadogV1::model::WidgetSortBy> = None;
171 let mut additional_properties: std::collections::BTreeMap<
172 String,
173 serde_json::Value,
174 > = std::collections::BTreeMap::new();
175 let mut _unparsed = false;
176
177 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
178 match k.as_str() {
179 "columns" => {
180 if v.is_null() {
181 continue;
182 }
183 columns = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
184 }
185 "formulas" => {
186 if v.is_null() {
187 continue;
188 }
189 formulas = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
190 }
191 "log_query" => {
192 if v.is_null() {
193 continue;
194 }
195 log_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
196 }
197 "q" => {
198 if v.is_null() {
199 continue;
200 }
201 q = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
202 }
203 "queries" => {
204 if v.is_null() {
205 continue;
206 }
207 queries = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
208 }
209 "query" => {
210 if v.is_null() {
211 continue;
212 }
213 query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
214 }
215 "response_format" => {
216 if v.is_null() {
217 continue;
218 }
219 response_format =
220 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
221 if let Some(ref _response_format) = response_format {
222 match _response_format {
223 crate::datadogV1::model::FormulaAndFunctionResponseFormat::UnparsedObject(_response_format) => {
224 _unparsed = true;
225 },
226 _ => {}
227 }
228 }
229 }
230 "rum_query" => {
231 if v.is_null() {
232 continue;
233 }
234 rum_query = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
235 }
236 "security_query" => {
237 if v.is_null() {
238 continue;
239 }
240 security_query =
241 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
242 }
243 "sort" => {
244 if v.is_null() {
245 continue;
246 }
247 sort = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
248 }
249 &_ => {
250 if let Ok(value) = serde_json::from_value(v.clone()) {
251 additional_properties.insert(k, value);
252 }
253 }
254 }
255 }
256
257 let content = GeomapWidgetRequest {
258 columns,
259 formulas,
260 log_query,
261 q,
262 queries,
263 query,
264 response_format,
265 rum_query,
266 security_query,
267 sort,
268 additional_properties,
269 _unparsed,
270 };
271
272 Ok(content)
273 }
274 }
275
276 deserializer.deserialize_any(GeomapWidgetRequestVisitor)
277 }
278}