Files
ha_explore/backend/app/routers/audit.py
2026-02-21 16:55:10 +01:00

39 lines
952 B
Python

from typing import Optional
from fastapi import APIRouter, Depends, Query
from sqlmodel import Session, col, func, select
from app.database import get_session
from app.models import AuditLog
router = APIRouter()
@router.get("/audit")
def list_audit(
page: int = Query(1, ge=1),
per_page: int = Query(50, ge=1, le=200),
action: Optional[str] = None,
session: Session = Depends(get_session),
):
query = select(AuditLog)
if action:
query = query.where(AuditLog.action == action)
count_query = select(func.count()).select_from(query.subquery())
total = session.exec(count_query).one()
query = query.order_by(col(AuditLog.ts).desc())
offset = (page - 1) * per_page
query = query.offset(offset).limit(per_page)
logs = session.exec(query).all()
return {
"items": [log.model_dump() for log in logs],
"total": total,
"page": page,
"per_page": per_page,
}