from __future__ import annotations from typing import Any from sqlalchemy.orm import Session from app.db.models import AuditLog, User def log_event( session: Session, *, action: str, target: str = "", detail: dict[str, Any] | None = None, request=None, actor: User | None = None, ) -> None: ip = "" user_agent = "" if request is not None: ip = request.client.host if getattr(request, "client", None) else "" user_agent = request.headers.get("User-Agent", "") if getattr(request, "headers", None) else "" log = AuditLog( actor_user_id=actor.id if actor else None, action=action, target=target, detail=detail or {}, ip=ip, user_agent=user_agent, ) session.add(log) session.commit()