34 lines
875 B
Python
34 lines
875 B
Python
"""Журнал аудита: запись действий, изменяющих состояние."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from sqlmodel import Session
|
|
|
|
from app.models import AuditLog
|
|
|
|
|
|
def record(
|
|
session: Session,
|
|
*,
|
|
actor_id: int | None,
|
|
action: str,
|
|
entity_type: str,
|
|
entity_id: int | None = None,
|
|
payload: dict[str, Any] | None = None,
|
|
ip: str | None = None,
|
|
user_agent: str | None = None,
|
|
) -> None:
|
|
"""Добавляет запись аудита в сессию (commit — на стороне вызывающего)."""
|
|
session.add(
|
|
AuditLog(
|
|
actor_id=actor_id,
|
|
action=action,
|
|
entity_type=entity_type,
|
|
entity_id=entity_id,
|
|
payload=payload,
|
|
ip=ip,
|
|
user_agent=user_agent,
|
|
)
|
|
)
|