datadog_api_client/datadogV2/model/
model_ruleset_resp_data_attributes.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 RulesetRespDataAttributes {
14 #[serde(rename = "created")]
16 pub created: crate::datadogV2::model::RulesetRespDataAttributesCreated,
17 #[serde(rename = "enabled")]
19 pub enabled: bool,
20 #[serde(rename = "last_modified_user_uuid")]
22 pub last_modified_user_uuid: String,
23 #[serde(rename = "modified")]
25 pub modified: crate::datadogV2::model::RulesetRespDataAttributesModified,
26 #[serde(rename = "name")]
28 pub name: String,
29 #[serde(rename = "position")]
31 pub position: i32,
32 #[serde(rename = "rules")]
34 pub rules: Vec<crate::datadogV2::model::RulesetRespDataAttributesRulesItems>,
35 #[serde(rename = "version")]
37 pub version: i64,
38 #[serde(flatten)]
39 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
40 #[serde(skip)]
41 #[serde(default)]
42 pub(crate) _unparsed: bool,
43}
44
45impl RulesetRespDataAttributes {
46 pub fn new(
47 created: crate::datadogV2::model::RulesetRespDataAttributesCreated,
48 enabled: bool,
49 last_modified_user_uuid: String,
50 modified: crate::datadogV2::model::RulesetRespDataAttributesModified,
51 name: String,
52 position: i32,
53 rules: Vec<crate::datadogV2::model::RulesetRespDataAttributesRulesItems>,
54 version: i64,
55 ) -> RulesetRespDataAttributes {
56 RulesetRespDataAttributes {
57 created,
58 enabled,
59 last_modified_user_uuid,
60 modified,
61 name,
62 position,
63 rules,
64 version,
65 additional_properties: std::collections::BTreeMap::new(),
66 _unparsed: false,
67 }
68 }
69
70 pub fn additional_properties(
71 mut self,
72 value: std::collections::BTreeMap<String, serde_json::Value>,
73 ) -> Self {
74 self.additional_properties = value;
75 self
76 }
77}
78
79impl<'de> Deserialize<'de> for RulesetRespDataAttributes {
80 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
81 where
82 D: Deserializer<'de>,
83 {
84 struct RulesetRespDataAttributesVisitor;
85 impl<'a> Visitor<'a> for RulesetRespDataAttributesVisitor {
86 type Value = RulesetRespDataAttributes;
87
88 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
89 f.write_str("a mapping")
90 }
91
92 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
93 where
94 M: MapAccess<'a>,
95 {
96 let mut created: Option<crate::datadogV2::model::RulesetRespDataAttributesCreated> =
97 None;
98 let mut enabled: Option<bool> = None;
99 let mut last_modified_user_uuid: Option<String> = None;
100 let mut modified: Option<
101 crate::datadogV2::model::RulesetRespDataAttributesModified,
102 > = None;
103 let mut name: Option<String> = None;
104 let mut position: Option<i32> = None;
105 let mut rules: Option<
106 Vec<crate::datadogV2::model::RulesetRespDataAttributesRulesItems>,
107 > = None;
108 let mut version: Option<i64> = None;
109 let mut additional_properties: std::collections::BTreeMap<
110 String,
111 serde_json::Value,
112 > = std::collections::BTreeMap::new();
113 let mut _unparsed = false;
114
115 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
116 match k.as_str() {
117 "created" => {
118 created = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
119 }
120 "enabled" => {
121 enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
122 }
123 "last_modified_user_uuid" => {
124 last_modified_user_uuid =
125 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
126 }
127 "modified" => {
128 modified = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
129 }
130 "name" => {
131 name = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
132 }
133 "position" => {
134 position = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
135 }
136 "rules" => {
137 rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
138 }
139 "version" => {
140 version = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
141 }
142 &_ => {
143 if let Ok(value) = serde_json::from_value(v.clone()) {
144 additional_properties.insert(k, value);
145 }
146 }
147 }
148 }
149 let created = created.ok_or_else(|| M::Error::missing_field("created"))?;
150 let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?;
151 let last_modified_user_uuid = last_modified_user_uuid
152 .ok_or_else(|| M::Error::missing_field("last_modified_user_uuid"))?;
153 let modified = modified.ok_or_else(|| M::Error::missing_field("modified"))?;
154 let name = name.ok_or_else(|| M::Error::missing_field("name"))?;
155 let position = position.ok_or_else(|| M::Error::missing_field("position"))?;
156 let rules = rules.ok_or_else(|| M::Error::missing_field("rules"))?;
157 let version = version.ok_or_else(|| M::Error::missing_field("version"))?;
158
159 let content = RulesetRespDataAttributes {
160 created,
161 enabled,
162 last_modified_user_uuid,
163 modified,
164 name,
165 position,
166 rules,
167 version,
168 additional_properties,
169 _unparsed,
170 };
171
172 Ok(content)
173 }
174 }
175
176 deserializer.deserialize_any(RulesetRespDataAttributesVisitor)
177 }
178}