use axum::extract::Query;
use axum::Json;
use mockforge_foundation::conformance_violations;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Deserialize)]
pub(crate) struct ListQuery {
pub limit: Option<usize>,
}
#[derive(Debug, Serialize)]
pub(crate) struct ListResponse {
pub violations: Vec<conformance_violations::ServerConformanceViolation>,
pub total: usize,
}
pub(crate) async fn get_conformance_violations(
Query(query): Query<ListQuery>,
) -> Json<ListResponse> {
let mut violations = conformance_violations::snapshot();
let total = violations.len();
if let Some(limit) = query.limit {
violations.truncate(limit);
}
Json(ListResponse { violations, total })
}
pub(crate) async fn clear_conformance_violations() -> Json<serde_json::Value> {
let before = conformance_violations::len();
conformance_violations::clear();
Json(serde_json::json!({ "cleared": before }))
}