Skip to content

Commit cd911fb

Browse files
Added support for transformation of explore request (#224)
* Added support for transformation of explore request * Update hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java Co-authored-by: Aaron Steinfeld <[email protected]> --------- Co-authored-by: Aaron Steinfeld <[email protected]>
1 parent 857b861 commit cd911fb

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/DefaultExploreRequestBuilder.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import graphql.schema.DataFetchingFieldSelectionSet;
77
import io.reactivex.rxjava3.core.Observable;
88
import io.reactivex.rxjava3.core.Single;
9+
import java.util.Collection;
910
import java.util.Collections;
1011
import java.util.List;
1112
import java.util.Map;
@@ -190,6 +191,46 @@ public Single<ExploreRequest> build(
190191
groupBy.map(GroupByArgument::groupLimit)));
191192
}
192193

194+
@Override
195+
public Single<ExploreRequest> rebuildWithAdditionalFilters(
196+
ExploreRequest originalRequest, List<FilterArgument> additionalFilterArguments) {
197+
return this.mergeFilterLists(
198+
originalRequest.context(),
199+
originalRequest.scope(),
200+
originalRequest.filterArguments(),
201+
additionalFilterArguments)
202+
.map(
203+
newFilterArguments ->
204+
new DefaultExploreRequest(
205+
originalRequest.context(),
206+
originalRequest.scope(),
207+
originalRequest.timeRange(),
208+
originalRequest.limit(),
209+
originalRequest.offset(),
210+
originalRequest.attributeRequests(),
211+
originalRequest.aggregationRequests(),
212+
originalRequest.orderArguments(),
213+
newFilterArguments,
214+
originalRequest.groupByAttributeRequests(),
215+
originalRequest.timeInterval(),
216+
originalRequest.entityContextOptions(),
217+
originalRequest.includeRest(),
218+
originalRequest.spaceId(),
219+
originalRequest.groupLimit()));
220+
}
221+
222+
private Single<List<AttributeAssociation<FilterArgument>>> mergeFilterLists(
223+
GraphQlRequestContext requestContext,
224+
String scope,
225+
Collection<AttributeAssociation<FilterArgument>> original,
226+
Collection<FilterArgument> additional) {
227+
return this.filterRequestBuilder
228+
.build(requestContext, scope, additional)
229+
.flattenAsObservable(list -> list)
230+
.concatWith(Observable.fromIterable(original))
231+
.toList();
232+
}
233+
193234
private Single<Set<AttributeRequest>> buildGroupByAttributes(
194235
GraphQlRequestContext context,
195236
String explorerScope,

hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreRequestBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,7 @@ Single<ExploreRequest> build(
3636
Optional<EntityContextOptions> entityContextOptions,
3737
Single<Set<AttributeRequest>> attributeSelections,
3838
Single<Set<MetricAggregationRequest>> aggregationSelections);
39+
40+
Single<ExploreRequest> rebuildWithAdditionalFilters(
41+
ExploreRequest originalRequest, List<FilterArgument> filterArguments);
3942
}

0 commit comments

Comments
 (0)