batuta/serve/banco/
handlers_audit.rs1use axum::{extract::State, response::Json};
4use serde::Deserialize;
5
6use super::audit::AuditEntry;
7use super::state::BancoState;
8
9pub async fn audit_query_handler(
11 State(state): State<BancoState>,
12 axum::extract::Query(params): axum::extract::Query<AuditQueryParams>,
13) -> Json<AuditQueryResponse> {
14 let limit = params.limit.unwrap_or(100).min(1000);
15 let entries = state.audit_log.recent(limit);
16 Json(AuditQueryResponse { total: state.audit_log.len(), returned: entries.len(), entries })
17}
18
19#[derive(Debug, Deserialize)]
20pub struct AuditQueryParams {
21 #[serde(default)]
22 pub limit: Option<usize>,
23}
24
25#[derive(Debug, serde::Serialize)]
26pub struct AuditQueryResponse {
27 pub total: usize,
28 pub returned: usize,
29 pub entries: Vec<AuditEntry>,
30}