Skip to content

Commit a2664bf

Browse files
authored
feat(aci): Expose query event types in SnubaQuery Serializer (#94717)
To differentiate between spans and logs datasets we need to expose the snuba event types. Logs for example have `trace_item_log` This also helps makes the new detector payload more similar to the details api.
1 parent 8ad40f3 commit a2664bf

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/sentry/incidents/endpoints/serializers/query_subscription.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class SnubaQuerySerializer(Serializer):
1313
def get_attrs(
1414
self, item_list: Sequence[SnubaQuery], user, **kwargs
1515
) -> MutableMapping[SnubaQuery, dict[str, Any]]:
16-
prefetch_related_objects(item_list, "environment")
16+
prefetch_related_objects(item_list, "environment", "snubaqueryeventtype_set")
1717
return {}
1818

1919
def serialize(
@@ -26,6 +26,7 @@ def serialize(
2626
"aggregate": obj.aggregate,
2727
"timeWindow": obj.time_window,
2828
"environment": obj.environment.name if obj.environment else None,
29+
"eventTypes": [event_type.name.lower() for event_type in obj.event_types],
2930
}
3031

3132

@@ -36,7 +37,7 @@ def get_attrs(
3637
) -> MutableMapping[QuerySubscription, dict[str, Any]]:
3738
attrs: dict[QuerySubscription, dict[str, Any]] = defaultdict(dict)
3839

39-
prefetch_related_objects(item_list, "snuba_query")
40+
prefetch_related_objects(item_list, "snuba_query", "snuba_query__snubaqueryeventtype_set")
4041
snuba_queries = [item.snuba_query for item in item_list]
4142
for qs, serialized_sq in zip(item_list, serialize(snuba_queries, user=user)):
4243
attrs[qs]["snuba_query"] = serialized_sq

tests/sentry/incidents/endpoints/serializers/test_query_subscription.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from sentry.api.serializers import serialize
2-
from sentry.snuba.models import QuerySubscription, SnubaQuery
2+
from sentry.snuba.models import QuerySubscription, SnubaQuery, SnubaQueryEventType
33
from sentry.testutils.cases import TestCase
44

55

@@ -14,6 +14,9 @@ def test_serialize(self):
1414
resolution=60,
1515
environment=self.environment,
1616
)
17+
SnubaQueryEventType.objects.create(
18+
snuba_query=snuba_query, type=SnubaQueryEventType.EventType.ERROR.value
19+
)
1720

1821
result = serialize(snuba_query)
1922

@@ -24,6 +27,7 @@ def test_serialize(self):
2427
"aggregate": "count()",
2528
"timeWindow": 60,
2629
"environment": self.environment.name,
30+
"eventTypes": ["error"],
2731
}
2832

2933
def test_serialize_no_environment(self):
@@ -35,6 +39,9 @@ def test_serialize_no_environment(self):
3539
time_window=60,
3640
resolution=60,
3741
)
42+
SnubaQueryEventType.objects.create(
43+
snuba_query=snuba_query, type=SnubaQueryEventType.EventType.ERROR.value
44+
)
3845

3946
result = serialize(snuba_query)
4047

@@ -45,6 +52,7 @@ def test_serialize_no_environment(self):
4552
"aggregate": "count()",
4653
"timeWindow": 60,
4754
"environment": None,
55+
"eventTypes": ["error"],
4856
}
4957

5058

@@ -58,6 +66,10 @@ def test_serialize(self):
5866
time_window=60,
5967
resolution=60,
6068
)
69+
SnubaQueryEventType.objects.create(
70+
snuba_query=snuba_query, type=SnubaQueryEventType.EventType.ERROR.value
71+
)
72+
6173
subscription = QuerySubscription.objects.create(
6274
project=self.project,
6375
status=QuerySubscription.Status.ACTIVE.value,
@@ -78,5 +90,6 @@ def test_serialize(self):
7890
"aggregate": "count()",
7991
"timeWindow": 60,
8092
"environment": None,
93+
"eventTypes": ["error"],
8194
},
8295
}

tests/sentry/workflow_engine/endpoints/test_serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ def test_serialize_full(self):
126126
"id": str(snuba_query.id),
127127
"query": "hello",
128128
"timeWindow": 60,
129+
"eventTypes": ["error"],
129130
},
130131
"status": 1,
131132
"subscription": None,
@@ -214,6 +215,7 @@ def test_serialize(self):
214215
"id": str(snuba_query.id),
215216
"query": "hello",
216217
"timeWindow": 60,
218+
"eventTypes": ["error"],
217219
},
218220
"status": 1,
219221
"subscription": None,

0 commit comments

Comments
 (0)