Skip to content

Commit 9c1dc82

Browse files
Added support for passing additional filters to EntityRequest (#199)
* Added support for passing additional filters to EntityRequest * minor cleanup * refactor: default context --------- Co-authored-by: Aaron Steinfeld <[email protected]>
1 parent a98a91c commit 9c1dc82

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

hypertrace-graphql-entity-schema/src/main/java/org/hypertrace/graphql/entity/request/DefaultEntityRequestBuilder.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.hypertrace.core.graphql.common.request.ResultSetRequestBuilder;
1919
import org.hypertrace.core.graphql.common.schema.arguments.TimeRangeArgument;
2020
import org.hypertrace.core.graphql.common.schema.results.ResultSet;
21+
import org.hypertrace.core.graphql.common.schema.results.arguments.filter.FilterArgument;
2122
import org.hypertrace.core.graphql.common.schema.results.arguments.space.SpaceArgument;
2223
import org.hypertrace.core.graphql.context.GraphQlRequestContext;
2324
import org.hypertrace.core.graphql.deserialization.ArgumentDeserializer;
@@ -74,6 +75,24 @@ public Single<EntityRequest> build(
7475
return this.build(context, arguments, entityScope, selectionSet);
7576
}
7677

78+
@Override
79+
public Single<EntityRequest> rebuildWithAdditionalFilters(
80+
EntityRequest originalRequest, List<FilterArgument> filterArguments) {
81+
return this.resultSetRequestBuilder
82+
.rebuildWithAdditionalFilters(originalRequest.resultSetRequest(), filterArguments)
83+
.map(
84+
newResultSetRequest ->
85+
new DefaultEntityRequest(
86+
originalRequest.entityType(),
87+
newResultSetRequest,
88+
originalRequest.metricRequests(),
89+
originalRequest.incomingEdgeRequests(),
90+
originalRequest.outgoingEdgeRequests(),
91+
originalRequest.includeInactive(),
92+
originalRequest.fetchTotal(),
93+
originalRequest.labelRequest()));
94+
}
95+
7796
private Single<EntityRequest> build(
7897
GraphQlRequestContext context,
7998
Map<String, Object> arguments,

hypertrace-graphql-entity-schema/src/main/java/org/hypertrace/graphql/entity/request/EntityRequest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,19 @@
22

33
import java.util.List;
44
import java.util.Optional;
5+
import org.hypertrace.core.graphql.common.request.ContextualRequest;
56
import org.hypertrace.core.graphql.common.request.ResultSetRequest;
7+
import org.hypertrace.core.graphql.context.GraphQlRequestContext;
68
import org.hypertrace.graphql.metric.request.MetricRequest;
79
import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument;
810

9-
public interface EntityRequest {
11+
public interface EntityRequest extends ContextualRequest {
12+
13+
@Override
14+
default GraphQlRequestContext context() {
15+
return resultSetRequest().context();
16+
}
17+
1018
String entityType();
1119

1220
ResultSetRequest<AggregatableOrderArgument> resultSetRequest();

hypertrace-graphql-entity-schema/src/main/java/org/hypertrace/graphql/entity/request/EntityRequestBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22

33
import graphql.schema.DataFetchingFieldSelectionSet;
44
import io.reactivex.rxjava3.core.Single;
5+
import java.util.List;
56
import java.util.Map;
7+
import org.hypertrace.core.graphql.common.schema.results.arguments.filter.FilterArgument;
68
import org.hypertrace.core.graphql.context.GraphQlRequestContext;
79

810
public interface EntityRequestBuilder {
911
Single<EntityRequest> build(
1012
GraphQlRequestContext context,
1113
Map<String, Object> arguments,
1214
DataFetchingFieldSelectionSet selectionSet);
15+
16+
Single<EntityRequest> rebuildWithAdditionalFilters(
17+
EntityRequest originalRequest, List<FilterArgument> filterArguments);
1318
}

0 commit comments

Comments
 (0)