30 lines
844 B
Python
30 lines
844 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Annotated
|
||
|
|
|
||
|
|
from fastapi import APIRouter, Depends, Query
|
||
|
|
from sqlalchemy.orm import Session
|
||
|
|
|
||
|
|
from app.api.deps import get_db
|
||
|
|
from app.schemas.audit_log import AuditLogRead
|
||
|
|
from app.services.audit import AuditLogService
|
||
|
|
|
||
|
|
router = APIRouter(prefix="/audit-logs")
|
||
|
|
DbSession = Annotated[Session, Depends(get_db)]
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("", response_model=list[AuditLogRead])
|
||
|
|
def list_audit_logs(
|
||
|
|
db: DbSession,
|
||
|
|
resource_type: str | None = Query(default=None),
|
||
|
|
resource_id: str | None = Query(default=None),
|
||
|
|
action: str | None = Query(default=None),
|
||
|
|
limit: int = Query(default=50, ge=1, le=200),
|
||
|
|
) -> list[AuditLogRead]:
|
||
|
|
return AuditLogService(db).list_logs(
|
||
|
|
resource_type=resource_type,
|
||
|
|
resource_id=resource_id,
|
||
|
|
action=action,
|
||
|
|
limit=limit,
|
||
|
|
)
|