datadog_api_client/datadogV1/model/
model_distribution_widget_histogram_request_query.rs

1// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2// This product includes software developed at Datadog (https://www.datadoghq.com/).
3// Copyright 2019-Present Datadog, Inc.
4use serde::{Deserialize, Deserializer, Serialize};
5
6/// Query definition for Distribution Widget Histogram Request
7#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum DistributionWidgetHistogramRequestQuery {
11    FormulaAndFunctionMetricQueryDefinition(
12        Box<crate::datadogV1::model::FormulaAndFunctionMetricQueryDefinition>,
13    ),
14    FormulaAndFunctionEventQueryDefinition(
15        Box<crate::datadogV1::model::FormulaAndFunctionEventQueryDefinition>,
16    ),
17    FormulaAndFunctionApmResourceStatsQueryDefinition(
18        Box<crate::datadogV1::model::FormulaAndFunctionApmResourceStatsQueryDefinition>,
19    ),
20    UnparsedObject(crate::datadog::UnparsedObject),
21}
22
23impl<'de> Deserialize<'de> for DistributionWidgetHistogramRequestQuery {
24    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
25    where
26        D: Deserializer<'de>,
27    {
28        let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
29        if let Ok(_v) = serde_json::from_value::<
30            Box<crate::datadogV1::model::FormulaAndFunctionMetricQueryDefinition>,
31        >(value.clone())
32        {
33            if !_v._unparsed {
34                return Ok(DistributionWidgetHistogramRequestQuery::FormulaAndFunctionMetricQueryDefinition(_v));
35            }
36        }
37        if let Ok(_v) = serde_json::from_value::<
38            Box<crate::datadogV1::model::FormulaAndFunctionEventQueryDefinition>,
39        >(value.clone())
40        {
41            if !_v._unparsed {
42                return Ok(
43                    DistributionWidgetHistogramRequestQuery::FormulaAndFunctionEventQueryDefinition(
44                        _v,
45                    ),
46                );
47            }
48        }
49        if let Ok(_v) = serde_json::from_value::<
50            Box<crate::datadogV1::model::FormulaAndFunctionApmResourceStatsQueryDefinition>,
51        >(value.clone())
52        {
53            if !_v._unparsed {
54                return Ok(DistributionWidgetHistogramRequestQuery::FormulaAndFunctionApmResourceStatsQueryDefinition(_v));
55            }
56        }
57
58        return Ok(DistributionWidgetHistogramRequestQuery::UnparsedObject(
59            crate::datadog::UnparsedObject { value },
60        ));
61    }
62}