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