diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-09-27 12:16:23 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-09-27 12:16:23 -0500 |
commit | 1218705fd52771a902eb6c64762623d0c6a13173 (patch) | |
tree | afdded96bff04b8e22704e54dedff5bf78e28229 /src/api.rs | |
parent | fd992d7e3c03f37fbcafe9d3f26c72a2ead3b2a7 (diff) |
refactor: merge Check into Status type
Diffstat (limited to 'src/api.rs')
-rw-r--r-- | src/api.rs | 32 |
1 files changed, 10 insertions, 22 deletions
@@ -3,7 +3,7 @@ use std::collections::HashMap; use axum::{extract::State, response::IntoResponse, Json}; use serde::{Deserialize, Serialize}; -use crate::{service::Services, Check, Error, Status}; +use crate::{service::Services, Error, Status}; pub mod services; @@ -19,15 +19,13 @@ pub fn router() -> axum::Router<Services> { #[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct Health { pub status: Status, - pub output: Option<String>, - pub checks: HashMap<String, Check>, + pub checks: HashMap<String, Status>, } impl<T: std::error::Error> From<T> for Health { fn from(value: T) -> Self { Health { - status: Status::Fail, - output: Some(value.to_string()), + status: value.into(), ..Default::default() } } @@ -42,30 +40,20 @@ impl IntoResponse for Health { pub async fn healthcheck(State(services): State<Services>) -> Health { let checks = match services.check().await { Ok(c) => c, - Err(err) => { - return Health { - status: Status::Fail, - output: Some(err.to_string()), - ..Default::default() - } - } + Err(err) => return err.into(), }; - let (status, output) = match checks + let status = match checks .values() - .filter(|s| !matches!(s.status, Status::Pass)) + .filter(|s| !matches!(s, Status::Pass)) .count() { - 0 => (Status::Pass, None), - 1 => (Status::Fail, Some("1 issue detected".to_string())), - n => (Status::Fail, Some(format!("{n} issues detected"))), + 0 => Status::Pass, + 1 => Status::Fail(Some("1 issue detected".to_string())), + n => Status::Fail(Some(format!("{n} issues detected"))), }; - Health { - status, - output, - checks, - } + Health { status, checks } } pub async fn fallback(uri: axum::http::Uri) -> Error { |