You've already forked AstralRinth
forked from didirus/AstralRinth
* reduced the default, and added environment override. * Using parse is more stable and doesn't fail CI this time :P * Added support for monitoring This support is currently basic, but it can be improved later down the road. * Forgot scheduler file * Added health check * Cargo fix * Update cargo.lock to avoid action fails. Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
31 lines
919 B
Rust
31 lines
919 B
Rust
use actix_web::{get, HttpResponse};
|
|
use serde_json::json;
|
|
use crate::health::status::test_database;
|
|
use actix_web::web::Data;
|
|
use sqlx::PgPool;
|
|
use crate::health::SEARCH_READY;
|
|
use std::sync::atomic::Ordering;
|
|
|
|
#[get("/health")]
|
|
pub async fn health_get(client: Data<PgPool>) -> HttpResponse {
|
|
// Check database connection:
|
|
let result = test_database(client).await;
|
|
if result.is_err() {
|
|
let data = json!({
|
|
"ready": false,
|
|
"reason": "Database connection error"
|
|
});
|
|
return HttpResponse::InternalServerError().json(data)
|
|
}
|
|
if !SEARCH_READY.load(Ordering::Acquire) {
|
|
let data = json!({
|
|
"ready": false,
|
|
"reason": "Indexing is not finished"
|
|
});
|
|
return HttpResponse::InternalServerError().json(data)
|
|
}
|
|
HttpResponse::Ok().json(json!({
|
|
"ready": true,
|
|
"reason": "Everything is OK"
|
|
}))
|
|
} |