use crate::AppState;
use crate::api::health_cluster_service::load_cluster_payload;
pub use crate::api::health_contracts::{ClusterHealthPayload, ClusterMirrorHealth};
use crate::api::health_endpoint_payload::{build_health_payload, build_root_health_payload};
use crate::provisioning::inspect_local_provisioning_dependencies;
use actix_web::{HttpResponse, get, web};
use serde_json::Value;
#[get("/")]
pub async fn root(app_state: web::Data<AppState>) -> HttpResponse {
let provisioning_status = inspect_local_provisioning_dependencies().await;
let body: Value = build_root_health_payload(app_state.get_ref(), &provisioning_status);
HttpResponse::Ok()
.content_type("application/json")
.json(body)
}
#[get("/health")]
pub async fn health(app_state: web::Data<AppState>) -> HttpResponse {
let provisioning_status = inspect_local_provisioning_dependencies().await;
let body: Value = build_health_payload(app_state.get_ref(), &provisioning_status);
HttpResponse::Ok()
.content_type("application/json")
.json(body)
}
#[get("/health/cluster")]
pub async fn cluster_health(app_state: web::Data<AppState>) -> HttpResponse {
HttpResponse::Ok().json(load_cluster_payload(app_state.get_ref()).await)
}
#[get("/ping")]
pub async fn ping() -> HttpResponse {
HttpResponse::Ok()
.content_type("text/plain; charset=utf-8")
.body("pong")
}