From 1218705fd52771a902eb6c64762623d0c6a13173 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Fri, 27 Sep 2024 12:16:23 -0500 Subject: refactor: merge Check into Status type --- src/api.rs | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) (limited to 'src/api.rs') diff --git a/src/api.rs b/src/api.rs index e6a91ba..8cf66ea 100644 --- a/src/api.rs +++ b/src/api.rs @@ -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 { #[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct Health { pub status: Status, - pub output: Option, - pub checks: HashMap, + pub checks: HashMap, } impl From 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) -> 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 { -- cgit v1.2.3-70-g09d2