diff --git a/app/audit/__init__.py b/app/audit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/audit/service.py b/app/audit/service.py new file mode 100644 index 0000000..4c41a83 --- /dev/null +++ b/app/audit/service.py @@ -0,0 +1,29 @@ +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