use serde::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};
use crate::runtime_status::RuntimeDesiredStatus;
#[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize, ToSchema)]
#[serde(rename_all = "snake_case")]
pub enum MetricsFormat {
Prometheus,
Json,
}
fn default_metrics_format() -> MetricsFormat {
MetricsFormat::Prometheus
}
#[derive(Debug, Deserialize, IntoParams, ToSchema)]
pub struct MetricsParameters {
#[serde(default = "default_metrics_format")]
pub format: MetricsFormat,
}
#[derive(Debug, Deserialize, IntoParams, ToSchema)]
#[serde(default)]
pub struct ActivateParams {
#[serde(with = "crate::runtime_status::snake_case_runtime_desired_status")]
pub initial: RuntimeDesiredStatus,
}
impl Default for ActivateParams {
fn default() -> Self {
Self {
initial: RuntimeDesiredStatus::Running,
}
}
}
#[derive(Debug, Deserialize, Serialize, IntoParams, ToSchema)]
#[serde(default)]
pub struct SamplyProfileParams {
pub ordinal: usize,
pub duration_secs: u64,
}
impl Default for SamplyProfileParams {
fn default() -> Self {
Self {
ordinal: 0,
duration_secs: 30,
}
}
}
#[derive(Debug, Default, Deserialize, Serialize, IntoParams, ToSchema)]
#[into_params(parameter_in = Query)]
#[serde(default)]
pub struct SamplyProfileGetParams {
pub ordinal: usize,
pub latest: bool,
}