|
@@ -8,16 +8,12 @@ from rest_framework.exceptions import ParseError
|
|
|
from rest_framework.request import Request
|
|
|
from rest_framework.response import Response
|
|
|
|
|
|
-from sentry import eventstore, features
|
|
|
+from sentry import eventstore
|
|
|
from sentry.api.base import EnvironmentMixin, region_silo_endpoint
|
|
|
from sentry.api.bases import GroupEndpoint
|
|
|
from sentry.api.exceptions import ResourceDoesNotExist
|
|
|
from sentry.api.helpers.environments import get_environments
|
|
|
-from sentry.api.helpers.events import (
|
|
|
- get_direct_hit_response,
|
|
|
- get_filter_for_group,
|
|
|
- get_query_builder_for_group,
|
|
|
-)
|
|
|
+from sentry.api.helpers.events import get_direct_hit_response, get_query_builder_for_group
|
|
|
from sentry.api.paginator import GenericOffsetPaginator
|
|
|
from sentry.api.serializers import EventSerializer, SimpleEventSerializer, serialize
|
|
|
from sentry.api.utils import InvalidParams, get_date_range_from_params
|
|
@@ -90,12 +86,9 @@ class GroupEventsEndpoint(GroupEndpoint, EnvironmentMixin): # type: ignore
|
|
|
"end": end if end else default_end,
|
|
|
}
|
|
|
referrer = f"api.group-events.{group.issue_category.name.lower()}"
|
|
|
- use_builder = features.has(
|
|
|
- "organizations:events-use-querybuilder", group.project.organization, actor=request.user
|
|
|
- )
|
|
|
|
|
|
direct_hit_resp = get_direct_hit_response(
|
|
|
- request, query, params, f"{referrer}.direct-hit", group, use_builder
|
|
|
+ request, query, params, f"{referrer}.direct-hit", group
|
|
|
)
|
|
|
if direct_hit_resp:
|
|
|
return direct_hit_resp
|
|
@@ -106,48 +99,30 @@ class GroupEventsEndpoint(GroupEndpoint, EnvironmentMixin): # type: ignore
|
|
|
full = request.GET.get("full", False)
|
|
|
|
|
|
def data_fn(offset: int, limit: int) -> Any:
|
|
|
- if use_builder:
|
|
|
- try:
|
|
|
- snuba_query = get_query_builder_for_group(
|
|
|
- request.GET.get("query", ""), params, group, limit=limit, offset=offset
|
|
|
- )
|
|
|
- except InvalidSearchQuery as e:
|
|
|
- raise ParseError(detail=str(e))
|
|
|
- results = snuba_query.run_query(referrer=referrer)
|
|
|
- results = [
|
|
|
- Event(
|
|
|
- event_id=evt["id"],
|
|
|
- project_id=evt["project.id"],
|
|
|
- )
|
|
|
- for evt in results["data"]
|
|
|
- ]
|
|
|
- if full:
|
|
|
- eventstore.bind_nodes(results)
|
|
|
-
|
|
|
- return results
|
|
|
- else:
|
|
|
- try:
|
|
|
- snuba_filter, dataset = get_filter_for_group(
|
|
|
- request.GET.get("query", None), params, group
|
|
|
- )
|
|
|
- except InvalidSearchQuery as e:
|
|
|
- raise ParseError(detail=str(e))
|
|
|
- if full:
|
|
|
- return eventstore.get_events(
|
|
|
- referrer=referrer,
|
|
|
- filter=snuba_filter,
|
|
|
- dataset=dataset,
|
|
|
- offset=offset,
|
|
|
- limit=limit,
|
|
|
- )
|
|
|
- else:
|
|
|
- return eventstore.get_unfetched_events(
|
|
|
- referrer=referrer,
|
|
|
- filter=snuba_filter,
|
|
|
- dataset=dataset,
|
|
|
- offset=offset,
|
|
|
- limit=limit,
|
|
|
- )
|
|
|
+ try:
|
|
|
+ snuba_query = get_query_builder_for_group(
|
|
|
+ request.GET.get("query", ""), params, group, limit=limit, offset=offset
|
|
|
+ )
|
|
|
+ except InvalidSearchQuery as e:
|
|
|
+ raise ParseError(detail=str(e))
|
|
|
+ results = snuba_query.run_query(referrer=referrer)
|
|
|
+ results = [
|
|
|
+ Event(
|
|
|
+ event_id=evt["id"],
|
|
|
+ project_id=evt["project.id"],
|
|
|
+ snuba_data={
|
|
|
+ "event_id": evt["id"],
|
|
|
+ "group_id": evt["issue.id"],
|
|
|
+ "project_id": evt["project.id"],
|
|
|
+ "timestamp": evt["timestamp"],
|
|
|
+ },
|
|
|
+ )
|
|
|
+ for evt in results["data"]
|
|
|
+ ]
|
|
|
+ if full:
|
|
|
+ eventstore.bind_nodes(results)
|
|
|
+
|
|
|
+ return results
|
|
|
|
|
|
serializer = EventSerializer() if full else SimpleEventSerializer()
|
|
|
return self.paginate(
|