1use 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 RangeSeries {
8 ApproximateThreshold(super::ApproximateThresholdRanges),
9 BooleanToRanges(super::BooleanToRanges),
10 DurationFilter(super::DurationFilterRanges),
11 EnumFilter(super::EnumFilterRanges),
12 EnumSeriesEqualityRangesNode(super::EnumSeriesEqualityRanges),
13 EventsSearch(super::EventsSearchRanges),
14 IntersectRange(super::IntersectRanges),
15 LiteralRanges(super::LiteralRanges),
16 MinMaxThreshold(super::MinMaxThresholdRanges),
18 Not(super::NotRanges),
19 OnChange(super::OnChangeRanges),
20 Peak(super::PeakRanges),
21 RangeNumericAggregation(super::RangesNumericAggregation),
22 Raw(super::Reference),
23 Derived(Box<super::DerivedSeries>),
24 SeriesCrossoverRangesNode(super::SeriesCrossoverRanges),
25 SeriesEqualityRangesNode(super::SeriesEqualityRanges),
26 StabilityDetection(super::StabilityDetectionRanges),
27 StaleRange(super::StaleRanges),
28 Threshold(super::ThresholdingRanges),
30 UnionRange(super::UnionRanges),
31 PaddedRanges(super::PaddedRanges),
32 Unknown(Unknown),
34}
35impl ser::Serialize for RangeSeries {
36 fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
37 where
38 S: ser::Serializer,
39 {
40 let mut map = s.serialize_map(Some(2))?;
41 match self {
42 RangeSeries::ApproximateThreshold(value) => {
43 map.serialize_entry(&"type", &"approximateThreshold")?;
44 map.serialize_entry(&"approximateThreshold", value)?;
45 }
46 RangeSeries::BooleanToRanges(value) => {
47 map.serialize_entry(&"type", &"booleanToRanges")?;
48 map.serialize_entry(&"booleanToRanges", value)?;
49 }
50 RangeSeries::DurationFilter(value) => {
51 map.serialize_entry(&"type", &"durationFilter")?;
52 map.serialize_entry(&"durationFilter", value)?;
53 }
54 RangeSeries::EnumFilter(value) => {
55 map.serialize_entry(&"type", &"enumFilter")?;
56 map.serialize_entry(&"enumFilter", value)?;
57 }
58 RangeSeries::EnumSeriesEqualityRangesNode(value) => {
59 map.serialize_entry(&"type", &"enumSeriesEqualityRangesNode")?;
60 map.serialize_entry(&"enumSeriesEqualityRangesNode", value)?;
61 }
62 RangeSeries::EventsSearch(value) => {
63 map.serialize_entry(&"type", &"eventsSearch")?;
64 map.serialize_entry(&"eventsSearch", value)?;
65 }
66 RangeSeries::IntersectRange(value) => {
67 map.serialize_entry(&"type", &"intersectRange")?;
68 map.serialize_entry(&"intersectRange", value)?;
69 }
70 RangeSeries::LiteralRanges(value) => {
71 map.serialize_entry(&"type", &"literalRanges")?;
72 map.serialize_entry(&"literalRanges", value)?;
73 }
74 RangeSeries::MinMaxThreshold(value) => {
75 map.serialize_entry(&"type", &"minMaxThreshold")?;
76 map.serialize_entry(&"minMaxThreshold", value)?;
77 }
78 RangeSeries::Not(value) => {
79 map.serialize_entry(&"type", &"not")?;
80 map.serialize_entry(&"not", value)?;
81 }
82 RangeSeries::OnChange(value) => {
83 map.serialize_entry(&"type", &"onChange")?;
84 map.serialize_entry(&"onChange", value)?;
85 }
86 RangeSeries::Peak(value) => {
87 map.serialize_entry(&"type", &"peak")?;
88 map.serialize_entry(&"peak", value)?;
89 }
90 RangeSeries::RangeNumericAggregation(value) => {
91 map.serialize_entry(&"type", &"rangeNumericAggregation")?;
92 map.serialize_entry(&"rangeNumericAggregation", value)?;
93 }
94 RangeSeries::Raw(value) => {
95 map.serialize_entry(&"type", &"raw")?;
96 map.serialize_entry(&"raw", value)?;
97 }
98 RangeSeries::Derived(value) => {
99 map.serialize_entry(&"type", &"derived")?;
100 map.serialize_entry(&"derived", value)?;
101 }
102 RangeSeries::SeriesCrossoverRangesNode(value) => {
103 map.serialize_entry(&"type", &"seriesCrossoverRangesNode")?;
104 map.serialize_entry(&"seriesCrossoverRangesNode", value)?;
105 }
106 RangeSeries::SeriesEqualityRangesNode(value) => {
107 map.serialize_entry(&"type", &"seriesEqualityRangesNode")?;
108 map.serialize_entry(&"seriesEqualityRangesNode", value)?;
109 }
110 RangeSeries::StabilityDetection(value) => {
111 map.serialize_entry(&"type", &"stabilityDetection")?;
112 map.serialize_entry(&"stabilityDetection", value)?;
113 }
114 RangeSeries::StaleRange(value) => {
115 map.serialize_entry(&"type", &"staleRange")?;
116 map.serialize_entry(&"staleRange", value)?;
117 }
118 RangeSeries::Threshold(value) => {
119 map.serialize_entry(&"type", &"threshold")?;
120 map.serialize_entry(&"threshold", value)?;
121 }
122 RangeSeries::UnionRange(value) => {
123 map.serialize_entry(&"type", &"unionRange")?;
124 map.serialize_entry(&"unionRange", value)?;
125 }
126 RangeSeries::PaddedRanges(value) => {
127 map.serialize_entry(&"type", &"paddedRanges")?;
128 map.serialize_entry(&"paddedRanges", value)?;
129 }
130 RangeSeries::Unknown(value) => {
131 map.serialize_entry(&"type", &value.type_)?;
132 map.serialize_entry(&value.type_, &value.value)?;
133 }
134 }
135 map.end()
136 }
137}
138impl<'de> de::Deserialize<'de> for RangeSeries {
139 fn deserialize<D>(d: D) -> Result<RangeSeries, D::Error>
140 where
141 D: de::Deserializer<'de>,
142 {
143 d.deserialize_map(Visitor_)
144 }
145}
146struct Visitor_;
147impl<'de> de::Visitor<'de> for Visitor_ {
148 type Value = RangeSeries;
149 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
150 fmt.write_str("union RangeSeries")
151 }
152 fn visit_map<A>(self, mut map: A) -> Result<RangeSeries, A::Error>
153 where
154 A: de::MapAccess<'de>,
155 {
156 let v = match map.next_key::<UnionField_<Variant_>>()? {
157 Some(UnionField_::Type) => {
158 let variant = map.next_value()?;
159 let key = map.next_key()?;
160 match (variant, key) {
161 (
162 Variant_::ApproximateThreshold,
163 Some(Variant_::ApproximateThreshold),
164 ) => {
165 let value = map.next_value()?;
166 RangeSeries::ApproximateThreshold(value)
167 }
168 (Variant_::BooleanToRanges, Some(Variant_::BooleanToRanges)) => {
169 let value = map.next_value()?;
170 RangeSeries::BooleanToRanges(value)
171 }
172 (Variant_::DurationFilter, Some(Variant_::DurationFilter)) => {
173 let value = map.next_value()?;
174 RangeSeries::DurationFilter(value)
175 }
176 (Variant_::EnumFilter, Some(Variant_::EnumFilter)) => {
177 let value = map.next_value()?;
178 RangeSeries::EnumFilter(value)
179 }
180 (
181 Variant_::EnumSeriesEqualityRangesNode,
182 Some(Variant_::EnumSeriesEqualityRangesNode),
183 ) => {
184 let value = map.next_value()?;
185 RangeSeries::EnumSeriesEqualityRangesNode(value)
186 }
187 (Variant_::EventsSearch, Some(Variant_::EventsSearch)) => {
188 let value = map.next_value()?;
189 RangeSeries::EventsSearch(value)
190 }
191 (Variant_::IntersectRange, Some(Variant_::IntersectRange)) => {
192 let value = map.next_value()?;
193 RangeSeries::IntersectRange(value)
194 }
195 (Variant_::LiteralRanges, Some(Variant_::LiteralRanges)) => {
196 let value = map.next_value()?;
197 RangeSeries::LiteralRanges(value)
198 }
199 (Variant_::MinMaxThreshold, Some(Variant_::MinMaxThreshold)) => {
200 let value = map.next_value()?;
201 RangeSeries::MinMaxThreshold(value)
202 }
203 (Variant_::Not, Some(Variant_::Not)) => {
204 let value = map.next_value()?;
205 RangeSeries::Not(value)
206 }
207 (Variant_::OnChange, Some(Variant_::OnChange)) => {
208 let value = map.next_value()?;
209 RangeSeries::OnChange(value)
210 }
211 (Variant_::Peak, Some(Variant_::Peak)) => {
212 let value = map.next_value()?;
213 RangeSeries::Peak(value)
214 }
215 (
216 Variant_::RangeNumericAggregation,
217 Some(Variant_::RangeNumericAggregation),
218 ) => {
219 let value = map.next_value()?;
220 RangeSeries::RangeNumericAggregation(value)
221 }
222 (Variant_::Raw, Some(Variant_::Raw)) => {
223 let value = map.next_value()?;
224 RangeSeries::Raw(value)
225 }
226 (Variant_::Derived, Some(Variant_::Derived)) => {
227 let value = map.next_value()?;
228 RangeSeries::Derived(value)
229 }
230 (
231 Variant_::SeriesCrossoverRangesNode,
232 Some(Variant_::SeriesCrossoverRangesNode),
233 ) => {
234 let value = map.next_value()?;
235 RangeSeries::SeriesCrossoverRangesNode(value)
236 }
237 (
238 Variant_::SeriesEqualityRangesNode,
239 Some(Variant_::SeriesEqualityRangesNode),
240 ) => {
241 let value = map.next_value()?;
242 RangeSeries::SeriesEqualityRangesNode(value)
243 }
244 (
245 Variant_::StabilityDetection,
246 Some(Variant_::StabilityDetection),
247 ) => {
248 let value = map.next_value()?;
249 RangeSeries::StabilityDetection(value)
250 }
251 (Variant_::StaleRange, Some(Variant_::StaleRange)) => {
252 let value = map.next_value()?;
253 RangeSeries::StaleRange(value)
254 }
255 (Variant_::Threshold, Some(Variant_::Threshold)) => {
256 let value = map.next_value()?;
257 RangeSeries::Threshold(value)
258 }
259 (Variant_::UnionRange, Some(Variant_::UnionRange)) => {
260 let value = map.next_value()?;
261 RangeSeries::UnionRange(value)
262 }
263 (Variant_::PaddedRanges, Some(Variant_::PaddedRanges)) => {
264 let value = map.next_value()?;
265 RangeSeries::PaddedRanges(value)
266 }
267 (Variant_::Unknown(type_), Some(Variant_::Unknown(b))) => {
268 if type_ == b {
269 let value = map.next_value()?;
270 RangeSeries::Unknown(Unknown { type_, value })
271 } else {
272 return Err(
273 de::Error::invalid_value(de::Unexpected::Str(&type_), &&*b),
274 )
275 }
276 }
277 (variant, Some(key)) => {
278 return Err(
279 de::Error::invalid_value(
280 de::Unexpected::Str(key.as_str()),
281 &variant.as_str(),
282 ),
283 );
284 }
285 (variant, None) => {
286 return Err(de::Error::missing_field(variant.as_str()));
287 }
288 }
289 }
290 Some(UnionField_::Value(variant)) => {
291 let value = match &variant {
292 Variant_::ApproximateThreshold => {
293 let value = map.next_value()?;
294 RangeSeries::ApproximateThreshold(value)
295 }
296 Variant_::BooleanToRanges => {
297 let value = map.next_value()?;
298 RangeSeries::BooleanToRanges(value)
299 }
300 Variant_::DurationFilter => {
301 let value = map.next_value()?;
302 RangeSeries::DurationFilter(value)
303 }
304 Variant_::EnumFilter => {
305 let value = map.next_value()?;
306 RangeSeries::EnumFilter(value)
307 }
308 Variant_::EnumSeriesEqualityRangesNode => {
309 let value = map.next_value()?;
310 RangeSeries::EnumSeriesEqualityRangesNode(value)
311 }
312 Variant_::EventsSearch => {
313 let value = map.next_value()?;
314 RangeSeries::EventsSearch(value)
315 }
316 Variant_::IntersectRange => {
317 let value = map.next_value()?;
318 RangeSeries::IntersectRange(value)
319 }
320 Variant_::LiteralRanges => {
321 let value = map.next_value()?;
322 RangeSeries::LiteralRanges(value)
323 }
324 Variant_::MinMaxThreshold => {
325 let value = map.next_value()?;
326 RangeSeries::MinMaxThreshold(value)
327 }
328 Variant_::Not => {
329 let value = map.next_value()?;
330 RangeSeries::Not(value)
331 }
332 Variant_::OnChange => {
333 let value = map.next_value()?;
334 RangeSeries::OnChange(value)
335 }
336 Variant_::Peak => {
337 let value = map.next_value()?;
338 RangeSeries::Peak(value)
339 }
340 Variant_::RangeNumericAggregation => {
341 let value = map.next_value()?;
342 RangeSeries::RangeNumericAggregation(value)
343 }
344 Variant_::Raw => {
345 let value = map.next_value()?;
346 RangeSeries::Raw(value)
347 }
348 Variant_::Derived => {
349 let value = map.next_value()?;
350 RangeSeries::Derived(value)
351 }
352 Variant_::SeriesCrossoverRangesNode => {
353 let value = map.next_value()?;
354 RangeSeries::SeriesCrossoverRangesNode(value)
355 }
356 Variant_::SeriesEqualityRangesNode => {
357 let value = map.next_value()?;
358 RangeSeries::SeriesEqualityRangesNode(value)
359 }
360 Variant_::StabilityDetection => {
361 let value = map.next_value()?;
362 RangeSeries::StabilityDetection(value)
363 }
364 Variant_::StaleRange => {
365 let value = map.next_value()?;
366 RangeSeries::StaleRange(value)
367 }
368 Variant_::Threshold => {
369 let value = map.next_value()?;
370 RangeSeries::Threshold(value)
371 }
372 Variant_::UnionRange => {
373 let value = map.next_value()?;
374 RangeSeries::UnionRange(value)
375 }
376 Variant_::PaddedRanges => {
377 let value = map.next_value()?;
378 RangeSeries::PaddedRanges(value)
379 }
380 Variant_::Unknown(type_) => {
381 let value = map.next_value()?;
382 RangeSeries::Unknown(Unknown {
383 type_: type_.clone(),
384 value,
385 })
386 }
387 };
388 if map.next_key::<UnionTypeField_>()?.is_none() {
389 return Err(de::Error::missing_field("type"));
390 }
391 let type_variant = map.next_value::<Variant_>()?;
392 if variant != type_variant {
393 return Err(
394 de::Error::invalid_value(
395 de::Unexpected::Str(type_variant.as_str()),
396 &variant.as_str(),
397 ),
398 );
399 }
400 value
401 }
402 None => return Err(de::Error::missing_field("type")),
403 };
404 if map.next_key::<UnionField_<Variant_>>()?.is_some() {
405 return Err(de::Error::invalid_length(3, &"type and value fields"));
406 }
407 Ok(v)
408 }
409}
410#[derive(PartialEq)]
411enum Variant_ {
412 ApproximateThreshold,
413 BooleanToRanges,
414 DurationFilter,
415 EnumFilter,
416 EnumSeriesEqualityRangesNode,
417 EventsSearch,
418 IntersectRange,
419 LiteralRanges,
420 MinMaxThreshold,
421 Not,
422 OnChange,
423 Peak,
424 RangeNumericAggregation,
425 Raw,
426 Derived,
427 SeriesCrossoverRangesNode,
428 SeriesEqualityRangesNode,
429 StabilityDetection,
430 StaleRange,
431 Threshold,
432 UnionRange,
433 PaddedRanges,
434 Unknown(Box<str>),
435}
436impl Variant_ {
437 fn as_str(&self) -> &'static str {
438 match *self {
439 Variant_::ApproximateThreshold => "approximateThreshold",
440 Variant_::BooleanToRanges => "booleanToRanges",
441 Variant_::DurationFilter => "durationFilter",
442 Variant_::EnumFilter => "enumFilter",
443 Variant_::EnumSeriesEqualityRangesNode => "enumSeriesEqualityRangesNode",
444 Variant_::EventsSearch => "eventsSearch",
445 Variant_::IntersectRange => "intersectRange",
446 Variant_::LiteralRanges => "literalRanges",
447 Variant_::MinMaxThreshold => "minMaxThreshold",
448 Variant_::Not => "not",
449 Variant_::OnChange => "onChange",
450 Variant_::Peak => "peak",
451 Variant_::RangeNumericAggregation => "rangeNumericAggregation",
452 Variant_::Raw => "raw",
453 Variant_::Derived => "derived",
454 Variant_::SeriesCrossoverRangesNode => "seriesCrossoverRangesNode",
455 Variant_::SeriesEqualityRangesNode => "seriesEqualityRangesNode",
456 Variant_::StabilityDetection => "stabilityDetection",
457 Variant_::StaleRange => "staleRange",
458 Variant_::Threshold => "threshold",
459 Variant_::UnionRange => "unionRange",
460 Variant_::PaddedRanges => "paddedRanges",
461 Variant_::Unknown(_) => "unknown variant",
462 }
463 }
464}
465impl<'de> de::Deserialize<'de> for Variant_ {
466 fn deserialize<D>(d: D) -> Result<Variant_, D::Error>
467 where
468 D: de::Deserializer<'de>,
469 {
470 d.deserialize_str(VariantVisitor_)
471 }
472}
473struct VariantVisitor_;
474impl<'de> de::Visitor<'de> for VariantVisitor_ {
475 type Value = Variant_;
476 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
477 fmt.write_str("string")
478 }
479 fn visit_str<E>(self, value: &str) -> Result<Variant_, E>
480 where
481 E: de::Error,
482 {
483 let v = match value {
484 "approximateThreshold" => Variant_::ApproximateThreshold,
485 "booleanToRanges" => Variant_::BooleanToRanges,
486 "durationFilter" => Variant_::DurationFilter,
487 "enumFilter" => Variant_::EnumFilter,
488 "enumSeriesEqualityRangesNode" => Variant_::EnumSeriesEqualityRangesNode,
489 "eventsSearch" => Variant_::EventsSearch,
490 "intersectRange" => Variant_::IntersectRange,
491 "literalRanges" => Variant_::LiteralRanges,
492 "minMaxThreshold" => Variant_::MinMaxThreshold,
493 "not" => Variant_::Not,
494 "onChange" => Variant_::OnChange,
495 "peak" => Variant_::Peak,
496 "rangeNumericAggregation" => Variant_::RangeNumericAggregation,
497 "raw" => Variant_::Raw,
498 "derived" => Variant_::Derived,
499 "seriesCrossoverRangesNode" => Variant_::SeriesCrossoverRangesNode,
500 "seriesEqualityRangesNode" => Variant_::SeriesEqualityRangesNode,
501 "stabilityDetection" => Variant_::StabilityDetection,
502 "staleRange" => Variant_::StaleRange,
503 "threshold" => Variant_::Threshold,
504 "unionRange" => Variant_::UnionRange,
505 "paddedRanges" => Variant_::PaddedRanges,
506 value => Variant_::Unknown(value.to_string().into_boxed_str()),
507 };
508 Ok(v)
509 }
510}
511#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
513pub struct Unknown {
514 type_: Box<str>,
515 value: conjure_object::Any,
516}
517impl Unknown {
518 #[inline]
520 pub fn type_(&self) -> &str {
521 &self.type_
522 }
523}