30 lines
800 B
Python
30 lines
800 B
Python
from typing import Any
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.models import AuditEvent
|
|
|
|
|
|
# принимает сессию SQLAlchemy и параметры события (actor_id, client_id, ip, user_agent, metadata);
|
|
# создаёт запись AuditEvent и коммитит транзакцию
|
|
def write_event(
|
|
db: Session,
|
|
event_type: str,
|
|
actor_id: int | None = None,
|
|
client_id: str | None = None,
|
|
ip: str | None = None,
|
|
user_agent: str | None = None,
|
|
metadata: dict[str, Any] | None = None,
|
|
) -> AuditEvent:
|
|
event = AuditEvent(
|
|
event_type=event_type,
|
|
actor_id=actor_id,
|
|
client_id=client_id,
|
|
ip=ip,
|
|
user_agent=user_agent,
|
|
metadata_json=metadata,
|
|
)
|
|
db.add(event)
|
|
db.commit()
|
|
return event
|