Skip to main content

brk_types/
series_selection.rs

1use derive_more::Deref;
2use schemars::JsonSchema;
3use serde::Deserialize;
4
5use crate::{DataRangeFormat, Index, SeriesList, SeriesName};
6
7/// Selection of series to query
8#[derive(Debug, Deref, Deserialize, JsonSchema)]
9pub struct SeriesSelection {
10    /// Requested series
11    #[serde(alias = "m", alias = "metrics")]
12    pub series: SeriesList,
13
14    /// Index to query
15    #[serde(alias = "i")]
16    pub index: Index,
17
18    #[deref]
19    #[serde(flatten)]
20    pub range: DataRangeFormat,
21}
22
23impl From<(Index, SeriesName, DataRangeFormat)> for SeriesSelection {
24    #[inline]
25    fn from((index, series, range): (Index, SeriesName, DataRangeFormat)) -> Self {
26        Self {
27            index,
28            series: SeriesList::from(series),
29            range,
30        }
31    }
32}
33
34impl From<(Index, SeriesList, DataRangeFormat)> for SeriesSelection {
35    #[inline]
36    fn from((index, series, range): (Index, SeriesList, DataRangeFormat)) -> Self {
37        Self {
38            index,
39            series,
40            range,
41        }
42    }
43}