Skip to main content

made_core/entities/
metric_family.rs

1use crate::entities::MetricSample;
2use crate::value_objects::{MetricHelp, MetricKind, MetricName};
3
4/// One Prometheus metric family and its flattened samples.
5#[derive(Clone, Debug, PartialEq)]
6pub struct MetricFamily {
7    name: MetricName,
8    help: MetricHelp,
9    kind: MetricKind,
10    samples: Vec<MetricSample>,
11}
12
13impl MetricFamily {
14    #[must_use]
15    pub fn new(
16        name: MetricName,
17        help: MetricHelp,
18        kind: MetricKind,
19        samples: Vec<MetricSample>,
20    ) -> Self {
21        Self {
22            name,
23            help,
24            kind,
25            samples,
26        }
27    }
28
29    #[must_use]
30    pub fn name(&self) -> &MetricName {
31        &self.name
32    }
33
34    #[must_use]
35    pub fn help(&self) -> &MetricHelp {
36        &self.help
37    }
38
39    #[must_use]
40    pub fn kind(&self) -> MetricKind {
41        self.kind
42    }
43
44    #[must_use]
45    pub fn samples(&self) -> &[MetricSample] {
46        &self.samples
47    }
48}