style: resolve conflicts and use Annotated pattern in audit_logs.py
- Resolves merge conflicts with main. - Implements Annotated pattern for FastAPI dependencies and query parameters. - Maintains compatibility with decorators by using module-level dependency singletons. - Fixes Ruff B008 issues. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
+16
-12
@@ -7,7 +7,7 @@ Events are append-only — there are no update or delete endpoints.
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any
|
from typing import Annotated, Any
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Query, Request
|
from fastapi import APIRouter, Depends, Query, Request
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
@@ -20,20 +20,24 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
# Module-level dependency singleton to satisfy Ruff B008 while maintaining default values for manual calls (e.g. in decorators).
|
||||||
|
_db_dep = Depends(get_db)
|
||||||
|
DbSession = Annotated[Session, _db_dep]
|
||||||
|
|
||||||
|
|
||||||
@router.get("/audit-logs")
|
@router.get("/audit-logs")
|
||||||
@require_login
|
@require_login
|
||||||
async def list_audit_logs(
|
async def list_audit_logs(
|
||||||
request: Request,
|
request: Request,
|
||||||
db: Session = Depends(get_db),
|
db: DbSession = _db_dep,
|
||||||
action: str | None = Query(None, description="Filter by action (exact match)"),
|
action: Annotated[str | None, Query(description="Filter by action (exact match)")] = None,
|
||||||
user: str | None = Query(None, description="Filter by username"),
|
user: Annotated[str | None, Query(description="Filter by username")] = None,
|
||||||
resource_type: str | None = Query(None, description="Filter by resource type"),
|
resource_type: Annotated[str | None, Query(description="Filter by resource type")] = None,
|
||||||
severity: str | None = Query(None, description="Filter by severity level"),
|
severity: Annotated[str | None, Query(description="Filter by severity level")] = None,
|
||||||
since: datetime | None = Query(None, description="Only events at or after this ISO-8601 timestamp"),
|
since: Annotated[datetime | None, Query(description="Only events at or after this ISO-8601 timestamp")] = None,
|
||||||
until: datetime | None = Query(None, description="Only events at or before this ISO-8601 timestamp"),
|
until: Annotated[datetime | None, Query(description="Only events at or before this ISO-8601 timestamp")] = None,
|
||||||
limit: int = Query(50, ge=1, le=500, description="Max rows to return"),
|
limit: Annotated[int, Query(ge=1, le=500, description="Max rows to return")] = 50,
|
||||||
offset: int = Query(0, ge=0, description="Rows to skip for pagination"),
|
offset: Annotated[int, Query(ge=0, description="Rows to skip for pagination")] = 0,
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""Return audit log entries with optional filtering and pagination.
|
"""Return audit log entries with optional filtering and pagination.
|
||||||
|
|
||||||
@@ -71,7 +75,7 @@ async def list_audit_logs(
|
|||||||
@require_login
|
@require_login
|
||||||
async def list_distinct_actions(
|
async def list_distinct_actions(
|
||||||
request: Request,
|
request: Request,
|
||||||
db: Session = Depends(get_db),
|
db: DbSession = _db_dep,
|
||||||
) -> list[str]:
|
) -> list[str]:
|
||||||
"""Return the distinct action values present in the audit log."""
|
"""Return the distinct action values present in the audit log."""
|
||||||
from app.models import AuditLog
|
from app.models import AuditLog
|
||||||
@@ -84,7 +88,7 @@ async def list_distinct_actions(
|
|||||||
@require_login
|
@require_login
|
||||||
async def list_distinct_users(
|
async def list_distinct_users(
|
||||||
request: Request,
|
request: Request,
|
||||||
db: Session = Depends(get_db),
|
db: DbSession = _db_dep,
|
||||||
) -> list[str]:
|
) -> list[str]:
|
||||||
"""Return the distinct user values present in the audit log."""
|
"""Return the distinct user values present in the audit log."""
|
||||||
from app.models import AuditLog
|
from app.models import AuditLog
|
||||||
|
|||||||
Reference in New Issue
Block a user