Files
hole-backend-rust/src/api/systemlog.rs
2026-03-24 03:05:33 +08:00

37 lines
1.2 KiB
Rust

use crate::api::{CurrentUser, JsonApi};
use crate::cache::cached_user_count;
use crate::db_conn::Db;
use crate::random_hasher::RandomHasher;
use crate::rds_conn::RdsConn;
use crate::rds_models::{get_admin_list, get_candidate_list, Systemlog};
use rocket::serde::json::{json, Value};
use rocket::State;
#[get("/systemlog")]
pub async fn get_systemlog(
user: CurrentUser,
rh: &State<RandomHasher>,
db: Db,
rconn: RdsConn,
) -> JsonApi {
let logs = Systemlog::get_list(&rconn, 50).await?;
Ok(json!({
"tmp_token": rh.get_tmp_token(),
"salt": look!(rh.salt),
"start_time": rh.start_time.timestamp(),
"user_count": cached_user_count(&db).await?,
"custom_title": user.custom_title,
"admin_list": get_admin_list(&rconn).await?,
"candidate_list": get_candidate_list(&rconn).await?,
"data": logs.into_iter().map(|log|
json!({
"type": log.action_type,
"user": log.user_hash,
"timestamp": log.time.timestamp(),
"detail": format!("{}\n{}", &log.target, &log.detail),
})
).collect::<Vec<Value>>(),
}))
}