"""Admin-visible change history.""" from __future__ import annotations import json from fastapi import APIRouter, Depends, Request from ..auth import Ctx from ..deps import get_ctx router = APIRouter() @router.get("/v1/audit") def get_audit(request: Request, ctx: Ctx = Depends(get_ctx), limit: int = 100, since: str | None = None): ctx.require_admin(request) q = "SELECT id, actor, action, detail_json, created_at FROM audit_log" params: list = [] if since: q += " WHERE created_at >= %s" params.append(since) q += " ORDER BY id DESC LIMIT %s" params.append(max(1, min(limit, 500))) events = [] for r in ctx.conn.execute(q, params).fetchall(): d = dict(r) d["detail"] = json.loads(d.pop("detail_json")) events.append(d) return {"events": events}