Skip to content

Commit 5c2394b

Browse files
authored
feat(logservice): Add possible data field to filter (#68953)
Adds a possible `data` field to `find_last_log()` to enable filtering by that field if and only if it is included.
1 parent f5b0e32 commit 5c2394b

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/sentry/services/hybrid_cloud/log/impl.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datetime
44

55
from django.db import IntegrityError, router, transaction
6+
from django.db.models import QuerySet
67

78
from sentry.db.postgres.transactions import enforce_constraints
89
from sentry.models.auditlogentry import AuditLogEntry
@@ -51,13 +52,21 @@ def record_user_ip(self, *, event: UserIpEvent) -> None:
5152
).update(last_active=event.last_seen)
5253

5354
def find_last_log(
54-
self, *, organization_id: int | None, target_object_id: int | None, event: int | None
55+
self,
56+
*,
57+
organization_id: int | None,
58+
target_object_id: int | None,
59+
event: int | None,
60+
data: dict[str, str] | None = None,
5561
) -> AuditLogEvent | None:
56-
last_entry: AuditLogEntry | None = AuditLogEntry.objects.filter(
62+
last_entry_q: QuerySet[AuditLogEntry] = AuditLogEntry.objects.filter(
5763
organization_id=organization_id,
5864
target_object=target_object_id,
5965
event=event,
60-
).last()
66+
)
67+
if data:
68+
last_entry_q = last_entry_q.filter(data=data)
69+
last_entry: AuditLogEntry | None = last_entry_q.last()
6170

6271
if last_entry is None:
6372
return None
@@ -87,6 +96,11 @@ def record_user_ip(self, *, event: UserIpEvent) -> None:
8796
outbox.save()
8897

8998
def find_last_log(
90-
self, *, organization_id: int | None, target_object_id: int | None, event: int | None
99+
self,
100+
*,
101+
organization_id: int | None,
102+
target_object_id: int | None,
103+
event: int | None,
104+
data: dict[str, str] | None = None,
91105
) -> AuditLogEvent | None:
92106
return None

src/sentry/services/hybrid_cloud/log/service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def find_last_log(
3838
organization_id: int | None,
3939
target_object_id: int | None,
4040
event: int | None,
41+
data: dict[str, str] | None = None,
4142
) -> AuditLogEvent | None:
4243
pass
4344

0 commit comments

Comments
 (0)