use crate::{
domain::runtime::HealthStatus,
dto::{
page::{Page, PageRequest},
prelude::*,
},
};
pub use crate::domain::public_metrics::PublicMetricFamily;
#[derive(CandidType, Clone, Debug, Deserialize)]
pub struct PublicHealth {
pub canister_id: Principal,
pub role: Option<String>,
pub health: HealthStatus,
pub observed_at_ns: u64,
}
#[derive(CandidType, Clone, Debug, Deserialize)]
pub struct PublicMetricsRequest {
pub family: PublicMetricFamily,
pub page: PageRequest,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
pub struct PublicMetric {
pub name: String,
pub canister_id: Option<Principal>,
pub value: u128,
pub unit: String,
}
#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
pub enum PublicSnapshotState {
Disabled,
Unavailable,
Fresh,
Stale,
}
#[derive(CandidType, Debug, Deserialize)]
pub struct PublicMetricsSnapshot {
pub family: PublicMetricFamily,
pub state: PublicSnapshotState,
pub sampled_at_ns: Option<u64>,
pub stale_after_ns: u64,
pub truncated: bool,
pub metrics: Page<PublicMetric>,
}