use jiff::Timestamp;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ServiceStatus {
#[default]
Healthy,
Degraded,
Unhealthy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComponentCheck {
pub name: String,
pub status: ServiceStatus,
}
#[derive(Debug, Default, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CheckHealth {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub use_cache: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Health {
pub status: ServiceStatus,
pub checks: Vec<ComponentCheck>,
pub timestamp: Timestamp,
}