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