Skip to main content

feldera_types/
time_series.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4
5/// Time series to make graphs in the web console easier.
6#[derive(Clone, Debug, Serialize, Deserialize, ToSchema, PartialEq, Eq)]
7pub struct TimeSeries {
8    /// Current time as of the creation of the structure.
9    #[serde(with = "chrono::serde::ts_milliseconds")]
10    pub now: DateTime<Utc>,
11
12    /// Time series.
13    ///
14    /// These report 60 seconds of samples, one per second.
15    pub samples: Vec<SampleStatistics>,
16}
17
18/// One sample of time-series data.
19#[derive(Copy, Clone, Debug, Serialize, Deserialize, ToSchema, PartialEq, Eq)]
20pub struct SampleStatistics {
21    /// Sample time.
22    #[serde(with = "chrono::serde::ts_milliseconds")]
23    #[serde(rename = "t")]
24    pub time: DateTime<Utc>,
25
26    /// Records processed.
27    #[serde(rename = "r")]
28    pub total_processed_records: u64,
29
30    /// Memory usage in bytes.
31    #[serde(rename = "m")]
32    pub memory_bytes: u64,
33
34    /// Storage usage in bytes.
35    #[serde(rename = "s")]
36    pub storage_bytes: u64,
37}