nominal_api_conjure/conjure/objects/scout/compute/api/
dataset.rs1use conjure_object::serde::{ser, de};
2use conjure_object::serde::ser::SerializeMap as SerializeMap_;
3use conjure_object::private::{UnionField_, UnionTypeField_};
4use std::fmt;
5#[derive(Debug, Clone, conjure_object::private::DeriveWith)]
6#[derive_with(PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub enum Dataset {
8 Asset(super::Asset),
11 Run(super::Run),
16 Saved(super::SavedDataset),
17 #[deprecated(note = "use saved instead.")]
18 Dataset(super::SavedDataset),
19 Search(super::SearchDataset),
20 Combine(super::CombinedDataset),
21 Tag(super::TaggedDataset),
22 Filter(super::FilteredDataset),
23 TimeShift(super::TimeShiftedDataset),
24 WithSeries(super::WithSeriesDataset),
25 Reference(super::DatasetReference),
26 #[deprecated(note = "use reference instead.")]
27 NamedReference(super::DatasetReference),
28 Unknown(Unknown),
30}
31impl ser::Serialize for Dataset {
32 fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
33 where
34 S: ser::Serializer,
35 {
36 let mut map = s.serialize_map(Some(2))?;
37 match self {
38 Dataset::Asset(value) => {
39 map.serialize_entry(&"type", &"asset")?;
40 map.serialize_entry(&"asset", value)?;
41 }
42 Dataset::Run(value) => {
43 map.serialize_entry(&"type", &"run")?;
44 map.serialize_entry(&"run", value)?;
45 }
46 Dataset::Saved(value) => {
47 map.serialize_entry(&"type", &"saved")?;
48 map.serialize_entry(&"saved", value)?;
49 }
50 #[allow(deprecated)]
51 Dataset::Dataset(value) => {
52 map.serialize_entry(&"type", &"dataset")?;
53 map.serialize_entry(&"dataset", value)?;
54 }
55 Dataset::Search(value) => {
56 map.serialize_entry(&"type", &"search")?;
57 map.serialize_entry(&"search", value)?;
58 }
59 Dataset::Combine(value) => {
60 map.serialize_entry(&"type", &"combine")?;
61 map.serialize_entry(&"combine", value)?;
62 }
63 Dataset::Tag(value) => {
64 map.serialize_entry(&"type", &"tag")?;
65 map.serialize_entry(&"tag", value)?;
66 }
67 Dataset::Filter(value) => {
68 map.serialize_entry(&"type", &"filter")?;
69 map.serialize_entry(&"filter", value)?;
70 }
71 Dataset::TimeShift(value) => {
72 map.serialize_entry(&"type", &"timeShift")?;
73 map.serialize_entry(&"timeShift", value)?;
74 }
75 Dataset::WithSeries(value) => {
76 map.serialize_entry(&"type", &"withSeries")?;
77 map.serialize_entry(&"withSeries", value)?;
78 }
79 Dataset::Reference(value) => {
80 map.serialize_entry(&"type", &"reference")?;
81 map.serialize_entry(&"reference", value)?;
82 }
83 #[allow(deprecated)]
84 Dataset::NamedReference(value) => {
85 map.serialize_entry(&"type", &"namedReference")?;
86 map.serialize_entry(&"namedReference", value)?;
87 }
88 Dataset::Unknown(value) => {
89 map.serialize_entry(&"type", &value.type_)?;
90 map.serialize_entry(&value.type_, &value.value)?;
91 }
92 }
93 map.end()
94 }
95}
96impl<'de> de::Deserialize<'de> for Dataset {
97 fn deserialize<D>(d: D) -> Result<Dataset, D::Error>
98 where
99 D: de::Deserializer<'de>,
100 {
101 d.deserialize_map(Visitor_)
102 }
103}
104struct Visitor_;
105impl<'de> de::Visitor<'de> for Visitor_ {
106 type Value = Dataset;
107 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
108 fmt.write_str("union Dataset")
109 }
110 fn visit_map<A>(self, mut map: A) -> Result<Dataset, A::Error>
111 where
112 A: de::MapAccess<'de>,
113 {
114 let v = match map.next_key::<UnionField_<Variant_>>()? {
115 Some(UnionField_::Type) => {
116 let variant = map.next_value()?;
117 let key = map.next_key()?;
118 match (variant, key) {
119 (Variant_::Asset, Some(Variant_::Asset)) => {
120 let value = map.next_value()?;
121 Dataset::Asset(value)
122 }
123 (Variant_::Run, Some(Variant_::Run)) => {
124 let value = map.next_value()?;
125 Dataset::Run(value)
126 }
127 (Variant_::Saved, Some(Variant_::Saved)) => {
128 let value = map.next_value()?;
129 Dataset::Saved(value)
130 }
131 #[allow(deprecated)]
132 (Variant_::Dataset, Some(Variant_::Dataset)) => {
133 let value = map.next_value()?;
134 Dataset::Dataset(value)
135 }
136 (Variant_::Search, Some(Variant_::Search)) => {
137 let value = map.next_value()?;
138 Dataset::Search(value)
139 }
140 (Variant_::Combine, Some(Variant_::Combine)) => {
141 let value = map.next_value()?;
142 Dataset::Combine(value)
143 }
144 (Variant_::Tag, Some(Variant_::Tag)) => {
145 let value = map.next_value()?;
146 Dataset::Tag(value)
147 }
148 (Variant_::Filter, Some(Variant_::Filter)) => {
149 let value = map.next_value()?;
150 Dataset::Filter(value)
151 }
152 (Variant_::TimeShift, Some(Variant_::TimeShift)) => {
153 let value = map.next_value()?;
154 Dataset::TimeShift(value)
155 }
156 (Variant_::WithSeries, Some(Variant_::WithSeries)) => {
157 let value = map.next_value()?;
158 Dataset::WithSeries(value)
159 }
160 (Variant_::Reference, Some(Variant_::Reference)) => {
161 let value = map.next_value()?;
162 Dataset::Reference(value)
163 }
164 #[allow(deprecated)]
165 (Variant_::NamedReference, Some(Variant_::NamedReference)) => {
166 let value = map.next_value()?;
167 Dataset::NamedReference(value)
168 }
169 (Variant_::Unknown(type_), Some(Variant_::Unknown(b))) => {
170 if type_ == b {
171 let value = map.next_value()?;
172 Dataset::Unknown(Unknown { type_, value })
173 } else {
174 return Err(
175 de::Error::invalid_value(de::Unexpected::Str(&type_), &&*b),
176 )
177 }
178 }
179 (variant, Some(key)) => {
180 return Err(
181 de::Error::invalid_value(
182 de::Unexpected::Str(key.as_str()),
183 &variant.as_str(),
184 ),
185 );
186 }
187 (variant, None) => {
188 return Err(de::Error::missing_field(variant.as_str()));
189 }
190 }
191 }
192 Some(UnionField_::Value(variant)) => {
193 let value = match &variant {
194 Variant_::Asset => {
195 let value = map.next_value()?;
196 Dataset::Asset(value)
197 }
198 Variant_::Run => {
199 let value = map.next_value()?;
200 Dataset::Run(value)
201 }
202 Variant_::Saved => {
203 let value = map.next_value()?;
204 Dataset::Saved(value)
205 }
206 Variant_::Dataset => {
207 let value = map.next_value()?;
208 #[allow(deprecated)] Dataset::Dataset(value)
209 }
210 Variant_::Search => {
211 let value = map.next_value()?;
212 Dataset::Search(value)
213 }
214 Variant_::Combine => {
215 let value = map.next_value()?;
216 Dataset::Combine(value)
217 }
218 Variant_::Tag => {
219 let value = map.next_value()?;
220 Dataset::Tag(value)
221 }
222 Variant_::Filter => {
223 let value = map.next_value()?;
224 Dataset::Filter(value)
225 }
226 Variant_::TimeShift => {
227 let value = map.next_value()?;
228 Dataset::TimeShift(value)
229 }
230 Variant_::WithSeries => {
231 let value = map.next_value()?;
232 Dataset::WithSeries(value)
233 }
234 Variant_::Reference => {
235 let value = map.next_value()?;
236 Dataset::Reference(value)
237 }
238 Variant_::NamedReference => {
239 let value = map.next_value()?;
240 #[allow(deprecated)] Dataset::NamedReference(value)
241 }
242 Variant_::Unknown(type_) => {
243 let value = map.next_value()?;
244 Dataset::Unknown(Unknown {
245 type_: type_.clone(),
246 value,
247 })
248 }
249 };
250 if map.next_key::<UnionTypeField_>()?.is_none() {
251 return Err(de::Error::missing_field("type"));
252 }
253 let type_variant = map.next_value::<Variant_>()?;
254 if variant != type_variant {
255 return Err(
256 de::Error::invalid_value(
257 de::Unexpected::Str(type_variant.as_str()),
258 &variant.as_str(),
259 ),
260 );
261 }
262 value
263 }
264 None => return Err(de::Error::missing_field("type")),
265 };
266 if map.next_key::<UnionField_<Variant_>>()?.is_some() {
267 return Err(de::Error::invalid_length(3, &"type and value fields"));
268 }
269 Ok(v)
270 }
271}
272#[derive(PartialEq)]
273enum Variant_ {
274 Asset,
275 Run,
276 Saved,
277 Dataset,
278 Search,
279 Combine,
280 Tag,
281 Filter,
282 TimeShift,
283 WithSeries,
284 Reference,
285 NamedReference,
286 Unknown(Box<str>),
287}
288impl Variant_ {
289 fn as_str(&self) -> &'static str {
290 match *self {
291 Variant_::Asset => "asset",
292 Variant_::Run => "run",
293 Variant_::Saved => "saved",
294 Variant_::Dataset => "dataset",
295 Variant_::Search => "search",
296 Variant_::Combine => "combine",
297 Variant_::Tag => "tag",
298 Variant_::Filter => "filter",
299 Variant_::TimeShift => "timeShift",
300 Variant_::WithSeries => "withSeries",
301 Variant_::Reference => "reference",
302 Variant_::NamedReference => "namedReference",
303 Variant_::Unknown(_) => "unknown variant",
304 }
305 }
306}
307impl<'de> de::Deserialize<'de> for Variant_ {
308 fn deserialize<D>(d: D) -> Result<Variant_, D::Error>
309 where
310 D: de::Deserializer<'de>,
311 {
312 d.deserialize_str(VariantVisitor_)
313 }
314}
315struct VariantVisitor_;
316impl<'de> de::Visitor<'de> for VariantVisitor_ {
317 type Value = Variant_;
318 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
319 fmt.write_str("string")
320 }
321 fn visit_str<E>(self, value: &str) -> Result<Variant_, E>
322 where
323 E: de::Error,
324 {
325 let v = match value {
326 "asset" => Variant_::Asset,
327 "run" => Variant_::Run,
328 "saved" => Variant_::Saved,
329 "dataset" => Variant_::Dataset,
330 "search" => Variant_::Search,
331 "combine" => Variant_::Combine,
332 "tag" => Variant_::Tag,
333 "filter" => Variant_::Filter,
334 "timeShift" => Variant_::TimeShift,
335 "withSeries" => Variant_::WithSeries,
336 "reference" => Variant_::Reference,
337 "namedReference" => Variant_::NamedReference,
338 value => Variant_::Unknown(value.to_string().into_boxed_str()),
339 };
340 Ok(v)
341 }
342}
343#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
345pub struct Unknown {
346 type_: Box<str>,
347 value: conjure_object::Any,
348}
349impl Unknown {
350 #[inline]
352 pub fn type_(&self) -> &str {
353 &self.type_
354 }
355}