#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TimeRange {
#[prost(string, tag = "1")]
pub start_time: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub end_time: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub timezone: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Value {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(enumeration = "Aggregation", tag = "2")]
pub aggregation: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsRequest {
#[prost(message, optional, tag = "1")]
pub time_range: ::core::option::Option<TimeRange>,
#[prost(enumeration = "TimeUnit", tag = "2")]
pub time_unit: i32,
#[prost(message, repeated, tag = "3")]
pub values: ::prost::alloc::vec::Vec<Value>,
#[prost(string, repeated, tag = "4")]
pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "5")]
pub filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsResponse {
#[prost(message, repeated, tag = "1")]
pub time_series: ::prost::alloc::vec::Vec<TimeSeries>,
#[prost(bool, tag = "2")]
pub limit_reached: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TimeSeries {
#[prost(string, repeated, tag = "1")]
pub group: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub group_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "2")]
pub data_points: ::prost::alloc::vec::Vec<DataPoint>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataPoint {
#[prost(message, optional, tag = "1")]
pub timestamp: ::core::option::Option<::prost_wkt_types::Timestamp>,
#[prost(double, repeated, tag = "2")]
pub values: ::prost::alloc::vec::Vec<f64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsScheme {
#[prost(message, repeated, tag = "1")]
pub values: ::prost::alloc::vec::Vec<ValueScheme>,
#[prost(string, repeated, tag = "2")]
pub filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ValueScheme {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(enumeration = "Aggregation", repeated, tag = "2")]
pub aggregations: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct StringRawValue {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub value: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FloatRawValue {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(double, tag = "2")]
pub value: f64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsRow {
#[prost(string, tag = "1")]
pub log_id: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "2")]
pub values: ::prost::alloc::vec::Vec<FloatRawValue>,
#[prost(message, repeated, tag = "3")]
pub group_by_values: ::prost::alloc::vec::Vec<StringRawValue>,
#[prost(message, repeated, tag = "4")]
pub filter_by_values: ::prost::alloc::vec::Vec<StringRawValue>,
#[prost(message, optional, tag = "5")]
pub timestamp: ::core::option::Option<::prost_wkt_types::Timestamp>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TimeUnit {
Invalid = 0,
Month = 1,
CalendarWeek = 2,
Day = 3,
Hour = 4,
QuarterHour = 5,
Minute = 6,
Second = 7,
None = 8,
}
impl TimeUnit {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Invalid => "TIME_UNIT_INVALID",
Self::Month => "TIME_UNIT_MONTH",
Self::CalendarWeek => "TIME_UNIT_CALENDAR_WEEK",
Self::Day => "TIME_UNIT_DAY",
Self::Hour => "TIME_UNIT_HOUR",
Self::QuarterHour => "TIME_UNIT_QUARTER_HOUR",
Self::Minute => "TIME_UNIT_MINUTE",
Self::Second => "TIME_UNIT_SECOND",
Self::None => "TIME_UNIT_NONE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TIME_UNIT_INVALID" => Some(Self::Invalid),
"TIME_UNIT_MONTH" => Some(Self::Month),
"TIME_UNIT_CALENDAR_WEEK" => Some(Self::CalendarWeek),
"TIME_UNIT_DAY" => Some(Self::Day),
"TIME_UNIT_HOUR" => Some(Self::Hour),
"TIME_UNIT_QUARTER_HOUR" => Some(Self::QuarterHour),
"TIME_UNIT_MINUTE" => Some(Self::Minute),
"TIME_UNIT_SECOND" => Some(Self::Second),
"TIME_UNIT_NONE" => Some(Self::None),
_ => None,
}
}
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Aggregation {
None = 0,
Sum = 1,
Avg = 2,
Var = 3,
Std = 4,
Min = 5,
Max = 6,
P50 = 7,
P90 = 8,
P99 = 9,
P999 = 10,
Count = 11,
CountDistinct = 12,
}
impl Aggregation {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "AGGREGATION_NONE",
Self::Sum => "AGGREGATION_SUM",
Self::Avg => "AGGREGATION_AVG",
Self::Var => "AGGREGATION_VAR",
Self::Std => "AGGREGATION_STD",
Self::Min => "AGGREGATION_MIN",
Self::Max => "AGGREGATION_MAX",
Self::P50 => "AGGREGATION_P50",
Self::P90 => "AGGREGATION_P90",
Self::P99 => "AGGREGATION_P99",
Self::P999 => "AGGREGATION_P999",
Self::Count => "AGGREGATION_COUNT",
Self::CountDistinct => "AGGREGATION_COUNT_DISTINCT",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"AGGREGATION_NONE" => Some(Self::None),
"AGGREGATION_SUM" => Some(Self::Sum),
"AGGREGATION_AVG" => Some(Self::Avg),
"AGGREGATION_VAR" => Some(Self::Var),
"AGGREGATION_STD" => Some(Self::Std),
"AGGREGATION_MIN" => Some(Self::Min),
"AGGREGATION_MAX" => Some(Self::Max),
"AGGREGATION_P50" => Some(Self::P50),
"AGGREGATION_P90" => Some(Self::P90),
"AGGREGATION_P99" => Some(Self::P99),
"AGGREGATION_P999" => Some(Self::P999),
"AGGREGATION_COUNT" => Some(Self::Count),
"AGGREGATION_COUNT_DISTINCT" => Some(Self::CountDistinct),
_ => None,
}
}
}