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