From 8a07638cef8677d63f272aed5119f3182a5b0685 Mon Sep 17 00:00:00 2001 From: Agzamus Date: Mon, 12 Oct 2026 16:38:13 +0300 Subject: [PATCH] =?UTF-8?q?feat:=208.1=20=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20`app/audi?= =?UTF-8?q?t/service.py`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/audit/__init__.py | 0 app/audit/service.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 app/audit/__init__.py create mode 100644 app/audit/service.py 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