34 lines
953 B
Python
Raw Normal View History

2025-12-10 12:02:17 +08:00
from typing import Any, Optional
from fastapi import Request
from sqlalchemy.ext.asyncio import AsyncSession
from ..models import AuditAction, AuditLog, AuditResourceType
async def create_audit_log(
session: AsyncSession,
*,
user_id: Optional[int],
customer_id: Optional[int],
action: AuditAction,
resource_type: AuditResourceType,
resource_id: Optional[int],
description: Optional[str] = None,
payload: Optional[Any] = None,
request: Optional[Request] = None,
) -> None:
log = AuditLog(
user_id=user_id,
customer_id=customer_id,
action=action,
resource_type=resource_type,
resource_id=resource_id,
description=description,
payload=payload,
ip_address=request.client.host if request and request.client else None,
user_agent=request.headers.get("User-Agent") if request else None,
)
session.add(log)
await session.flush()