From 3d76d15eb6613fe65d5becc81a41c3d355a31b11 Mon Sep 17 00:00:00 2001 From: avinash Date: Thu, 2 May 2024 14:59:57 +0530 Subject: [PATCH 1/2] Added support for transformation of explore request --- .../request/DefaultExploreRequestBuilder.java | 43 ++++++++++++++++++- .../request/ExploreRequestBuilder.java | 3 ++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java index 213abc5a..a45f62b1 100644 --- a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java +++ b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java @@ -6,6 +6,7 @@ import graphql.schema.DataFetchingFieldSelectionSet; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Single; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -37,7 +38,7 @@ import org.hypertrace.graphql.metric.request.MetricAggregationRequest; import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument; -class DefaultExploreRequestBuilder implements ExploreRequestBuilder { +public class DefaultExploreRequestBuilder implements ExploreRequestBuilder { private static final int DEFAULT_LIMIT = 100; private static final int DEFAULT_OFFSET = 0; @@ -190,6 +191,46 @@ public Single build( groupBy.map(GroupByArgument::groupLimit))); } + @Override + public Single rebuildWithAdditionalFilters( + ExploreRequest originalRequest, List additionalFilterArguments) { + return this.mergeFilterLists( + originalRequest.context(), + originalRequest.scope(), + originalRequest.filterArguments(), + additionalFilterArguments) + .map( + newFilterArguments -> + new DefaultExploreRequest( + originalRequest.context(), + originalRequest.scope(), + originalRequest.timeRange(), + originalRequest.limit(), + originalRequest.offset(), + originalRequest.attributeRequests(), + originalRequest.aggregationRequests(), + originalRequest.orderArguments(), + newFilterArguments, + originalRequest.groupByAttributeRequests(), + originalRequest.timeInterval(), + originalRequest.entityContextOptions(), + originalRequest.includeRest(), + originalRequest.spaceId(), + originalRequest.groupLimit())); + } + + private Single>> mergeFilterLists( + GraphQlRequestContext requestContext, + String scope, + Collection> original, + Collection additional) { + return this.filterRequestBuilder + .build(requestContext, scope, additional) + .flattenAsObservable(list -> list) + .concatWith(Observable.fromIterable(original)) + .toList(); + } + private Single> buildGroupByAttributes( GraphQlRequestContext context, String explorerScope, diff --git a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreRequestBuilder.java b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreRequestBuilder.java index 95bee6b4..46b5ddb9 100644 --- a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreRequestBuilder.java +++ b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreRequestBuilder.java @@ -36,4 +36,7 @@ Single build( Optional entityContextOptions, Single> attributeSelections, Single> aggregationSelections); + + Single rebuildWithAdditionalFilters( + ExploreRequest originalRequest, List filterArguments); } From 97e6cb1d8c59e1c1f1bd2d02fdd7d379fca70729 Mon Sep 17 00:00:00 2001 From: Avinash <52672355+avinashkolluru@users.noreply.github.com> Date: Thu, 2 May 2024 17:20:13 +0530 Subject: [PATCH 2/2] Update hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java Co-authored-by: Aaron Steinfeld <45047841+aaron-steinfeld@users.noreply.github.com> --- .../graphql/explorer/request/DefaultExploreRequestBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java index a45f62b1..2e870635 100644 --- a/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java +++ b/hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java @@ -38,7 +38,7 @@ import org.hypertrace.graphql.metric.request.MetricAggregationRequest; import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument; -public class DefaultExploreRequestBuilder implements ExploreRequestBuilder { +class DefaultExploreRequestBuilder implements ExploreRequestBuilder { private static final int DEFAULT_LIMIT = 100; private static final int DEFAULT_OFFSET = 0;