|
@@ -3,6 +3,7 @@ from rest_framework.response import Response
|
|
|
|
|
|
from sentry import features
|
|
|
from sentry.api.bases.organization import NoProjects, OrganizationEndpoint
|
|
|
+from sentry.api.paginator import GenericOffsetPaginator
|
|
|
from sentry.models.organization import Organization
|
|
|
from sentry.replays.post_process import process_raw_response
|
|
|
from sentry.replays.query import query_replays_collection
|
|
@@ -24,19 +25,24 @@ class OrganizationReplayIndexEndpoint(OrganizationEndpoint):
|
|
|
if key not in filter_params:
|
|
|
filter_params[key] = value
|
|
|
|
|
|
- snuba_response = query_replays_collection(
|
|
|
- project_ids=filter_params["project_id"],
|
|
|
- start=filter_params["start"],
|
|
|
- end=filter_params["end"],
|
|
|
- environment=filter_params.get("environment"),
|
|
|
- sort=filter_params.get("sort"),
|
|
|
- limit=filter_params.get("limit"),
|
|
|
- offset=filter_params.get("offset"),
|
|
|
+ def data_fn(offset, limit):
|
|
|
+ return query_replays_collection(
|
|
|
+ project_ids=filter_params["project_id"],
|
|
|
+ start=filter_params["start"],
|
|
|
+ end=filter_params["end"],
|
|
|
+ environment=filter_params.get("environment"),
|
|
|
+ sort=filter_params.get("sort"),
|
|
|
+ limit=limit,
|
|
|
+ offset=offset,
|
|
|
+ )
|
|
|
+
|
|
|
+ return self.paginate(
|
|
|
+ request=request,
|
|
|
+ paginator=GenericOffsetPaginator(data_fn=data_fn),
|
|
|
+ on_results=lambda results: {
|
|
|
+ "data": process_raw_response(
|
|
|
+ results,
|
|
|
+ fields=request.query_params.getlist("field"),
|
|
|
+ )
|
|
|
+ },
|
|
|
)
|
|
|
-
|
|
|
- response = process_raw_response(
|
|
|
- snuba_response,
|
|
|
- fields=request.query_params.getlist("field"),
|
|
|
- )
|
|
|
-
|
|
|
- return Response({"data": response}, status=200)
|