Skip to main content

nominal_api/conjure/objects/storage/writer/api/
telegraf_metric.rs

1#[derive(
2    Debug,
3    Clone,
4    conjure_object::serde::Serialize,
5    conjure_object::serde::Deserialize,
6    PartialEq,
7    Eq,
8    PartialOrd,
9    Ord,
10    Hash
11)]
12#[serde(crate = "conjure_object::serde")]
13#[conjure_object::private::staged_builder::staged_builder]
14#[builder(crate = conjure_object::private::staged_builder, update, inline)]
15pub struct TelegrafMetric {
16    #[builder(
17        default,
18        map(
19            key(type = super::Field),
20            value(
21                custom(
22                    type = impl
23                    conjure_object::serde::Serialize,
24                    convert = |v|conjure_object::Any::new(
25                        v
26                    ).expect("value failed to serialize")
27                )
28            )
29        )
30    )]
31    #[serde(
32        rename = "fields",
33        skip_serializing_if = "std::collections::BTreeMap::is_empty",
34        default
35    )]
36    fields: std::collections::BTreeMap<super::Field, conjure_object::Any>,
37    #[serde(rename = "name")]
38    name: super::MeasurementName,
39    #[builder(
40        default,
41        map(
42            key(type = super::super::super::super::api::TagName),
43            value(type = super::super::super::super::api::TagValue)
44        )
45    )]
46    #[serde(
47        rename = "tags",
48        skip_serializing_if = "std::collections::BTreeMap::is_empty",
49        default
50    )]
51    tags: std::collections::BTreeMap<
52        super::super::super::super::api::TagName,
53        super::super::super::super::api::TagValue,
54    >,
55    #[builder(
56        custom(
57            type = impl
58            conjure_object::serde::Serialize,
59            convert = |v|conjure_object::Any::new(v).expect("value failed to serialize")
60        )
61    )]
62    #[serde(rename = "timestamp")]
63    timestamp: conjure_object::Any,
64}
65impl TelegrafMetric {
66    /// Constructs a new instance of the type.
67    #[inline]
68    pub fn new(
69        name: super::MeasurementName,
70        timestamp: impl conjure_object::serde::Serialize,
71    ) -> Self {
72        Self::builder().name(name).timestamp(timestamp).build()
73    }
74    /// The values are expected to be either numeric or string values
75    #[inline]
76    pub fn fields(
77        &self,
78    ) -> &std::collections::BTreeMap<super::Field, conjure_object::Any> {
79        &self.fields
80    }
81    /// The measurement name. Measurement name and field are concatenated when creating the Nominal channel name.
82    #[inline]
83    pub fn name(&self) -> &super::MeasurementName {
84        &self.name
85    }
86    #[inline]
87    pub fn tags(
88        &self,
89    ) -> &std::collections::BTreeMap<
90        super::super::super::super::api::TagName,
91        super::super::super::super::api::TagValue,
92    > {
93        &self.tags
94    }
95    #[inline]
96    pub fn timestamp(&self) -> &conjure_object::Any {
97        &self.timestamp
98    }
99}