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