Skip to content

Commit 4c54729

Browse files
committed
Initial setup; unoptimized search query for issues
1 parent a85fb30 commit 4c54729

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

src/sentry/search/eap/occurrences/attributes.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from sentry.models.group import Group
12
from sentry.search.eap import constants
23
from sentry.search.eap.columns import (
34
ResolvedAttribute,
@@ -6,6 +7,15 @@
67
from sentry.search.eap.common_columns import COMMON_COLUMNS, project_virtual_contexts
78
from sentry.utils.validators import is_event_id_or_list
89

10+
11+
def group_id_to_issue_processor(group_id: int) -> str:
12+
try:
13+
grp = Group.objects.filter(id=group_id).first()
14+
return grp.qualified_short_id
15+
except Group.DoesNotExist:
16+
return "Unknown"
17+
18+
919
OCCURRENCE_ATTRIBUTE_DEFINITIONS = {
1020
column.public_alias: column
1121
for column in (
@@ -280,6 +290,12 @@
280290
internal_name="frame_stack_levels",
281291
search_type="string",
282292
),
293+
ResolvedAttribute(
294+
public_alias="issue",
295+
internal_name="group_id",
296+
search_type="integer",
297+
processor=group_id_to_issue_processor,
298+
),
283299
]
284300
)
285301
}

tests/snuba/api/endpoints/test_organization_events_occurrences.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,3 +475,31 @@ def test_three_issue_uses_single_group_table_query(self) -> None:
475475
q["sql"] for q in ctx.captured_queries if group_table in q["sql"]
476476
]
477477
assert len(response.data["data"]) == 1
478+
479+
def test_issues_field_in_response(self) -> None:
480+
group1 = self.create_group(project=self.project)
481+
group2 = self.create_group(project=self.project)
482+
occurrences = [
483+
self.create_eap_occurrence(
484+
group_id=group1.id,
485+
project=self.project,
486+
attributes={"fingerprint": ["g1"]},
487+
),
488+
self.create_eap_occurrence(
489+
group_id=group2.id,
490+
project=self.project,
491+
attributes={"fingerprint": ["g2"]},
492+
),
493+
]
494+
self.store_eap_items(occurrences)
495+
response = self.request_with_feature_flag(
496+
{
497+
"field": ["group_id", "project", "project.name", "issue"],
498+
"statsPeriod": "2h",
499+
"project": [self.project.id],
500+
}
501+
)
502+
data = sorted(response.data["data"], key=lambda x: x["group_id"])
503+
assert len(data) == 2
504+
assert data[0]["issue"] == group1.qualified_short_id
505+
assert data[1]["issue"] == group2.qualified_short_id

0 commit comments

Comments
 (0)