vector/api/schema/metrics/source/
mod.rs

1pub mod file;
2mod generic;
3
4use async_graphql::Interface;
5
6use super::{ReceivedBytesTotal, ReceivedEventsTotal, SentEventsTotal};
7use crate::event::Metric;
8
9#[derive(Debug, Clone, Interface)]
10#[graphql(
11    field(name = "received_bytes_total", ty = "Option<ReceivedBytesTotal>"),
12    field(name = "received_events_total", ty = "Option<ReceivedEventsTotal>"),
13    field(name = "sent_events_total", ty = "Option<SentEventsTotal>")
14)]
15pub enum SourceMetrics {
16    GenericSourceMetrics(generic::GenericSourceMetrics),
17    FileSourceMetrics(file::FileSourceMetrics),
18}
19
20pub trait IntoSourceMetrics {
21    fn into_source_metrics(self, component_type: &str) -> SourceMetrics;
22}
23
24impl IntoSourceMetrics for Vec<Metric> {
25    fn into_source_metrics(self, component_type: &str) -> SourceMetrics {
26        match component_type {
27            "file" => SourceMetrics::FileSourceMetrics(file::FileSourceMetrics::new(self)),
28            _ => SourceMetrics::GenericSourceMetrics(generic::GenericSourceMetrics::new(self)),
29        }
30    }
31}