summaryrefslogtreecommitdiffstats
path: root/src/api.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-09-27 12:16:23 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-09-27 12:16:23 -0500
commit1218705fd52771a902eb6c64762623d0c6a13173 (patch)
treeafdded96bff04b8e22704e54dedff5bf78e28229 /src/api.rs
parentfd992d7e3c03f37fbcafe9d3f26c72a2ead3b2a7 (diff)
refactor: merge Check into Status type
Diffstat (limited to 'src/api.rs')
-rw-r--r--src/api.rs32
1 files changed, 10 insertions, 22 deletions
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<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 {