Issue 1: repo scaffold and project structure
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""Audit log endpoint."""
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlmodel import Session, select, col
|
||||
|
||||
from ten31portal.auth import require_audit_reader
|
||||
from ten31portal.database import get_session
|
||||
from ten31portal.models import AuditLog, User
|
||||
from ten31portal.schemas import AuditLogResponse
|
||||
|
||||
router = APIRouter(prefix="/api/audit", tags=["audit"])
|
||||
|
||||
|
||||
@router.get("")
|
||||
def list_audit(
|
||||
object_type: str | None = None,
|
||||
object_id: int | None = None,
|
||||
page: int = Query(default=1, ge=1),
|
||||
per_page: int = Query(default=50, ge=1, le=200),
|
||||
user: User = Depends(require_audit_reader),
|
||||
session: Session = Depends(get_session),
|
||||
) -> list[AuditLogResponse]:
|
||||
stmt = select(AuditLog)
|
||||
if object_type is not None:
|
||||
stmt = stmt.where(AuditLog.object_type == object_type)
|
||||
if object_id is not None:
|
||||
stmt = stmt.where(AuditLog.object_id == object_id)
|
||||
stmt = stmt.order_by(col(AuditLog.id).desc())
|
||||
stmt = stmt.offset((page - 1) * per_page).limit(per_page)
|
||||
rows = session.exec(stmt).all()
|
||||
return [AuditLogResponse.model_validate(r, from_attributes=True) for r in rows]
|
||||
Reference in New Issue
Block a user