Skip to content

Commit 34cadce

Browse files
committed
fix(entity-joiner): support for metric requests
1 parent b74212b commit 34cadce

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

hypertrace-graphql-entity-schema/src/main/java/org/hypertrace/graphql/entity/joiner/DefaultEntityJoinerBuilder.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.Set;
3030
import java.util.stream.Collector;
3131
import java.util.stream.Collectors;
32+
import java.util.stream.Stream;
3233
import javax.inject.Inject;
3334
import lombok.AllArgsConstructor;
3435
import lombok.Value;
@@ -60,6 +61,7 @@
6061
import org.hypertrace.graphql.entity.schema.argument.EntityTypeStringArgument;
6162
import org.hypertrace.graphql.metric.request.MetricAggregationRequest;
6263
import org.hypertrace.graphql.metric.request.MetricRequest;
64+
import org.hypertrace.graphql.metric.request.MetricRequestBuilder;
6365
import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument;
6466

6567
@Slf4j
@@ -70,6 +72,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
7072
private final GraphQlSelectionFinder selectionFinder;
7173
private final ArgumentDeserializer argumentDeserializer;
7274
private final ResultSetRequestBuilder resultSetRequestBuilder;
75+
private final MetricRequestBuilder metricRequestBuilder;
7376
private final FilterRequestBuilder filterRequestBuilder;
7477
private final Scheduler boundedIoScheduler;
7578
private final EntityLabelRequestBuilder entityLabelRequestBuilder;
@@ -80,6 +83,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
8083
GraphQlSelectionFinder selectionFinder,
8184
ArgumentDeserializer argumentDeserializer,
8285
ResultSetRequestBuilder resultSetRequestBuilder,
86+
MetricRequestBuilder metricRequestBuilder,
8387
FilterRequestBuilder filterRequestBuilder,
8488
@BoundedIoScheduler Scheduler boundedIoScheduler,
8589
EntityLabelRequestBuilder entityLabelRequestBuilder) {
@@ -88,6 +92,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
8892
this.selectionFinder = selectionFinder;
8993
this.argumentDeserializer = argumentDeserializer;
9094
this.resultSetRequestBuilder = resultSetRequestBuilder;
95+
this.metricRequestBuilder = metricRequestBuilder;
9196
this.filterRequestBuilder = filterRequestBuilder;
9297
this.boundedIoScheduler = boundedIoScheduler;
9398
this.entityLabelRequestBuilder = entityLabelRequestBuilder;
@@ -268,6 +273,8 @@ private Single<EntityRequest> buildEntityRequest(
268273
String entityType,
269274
int entityIdsToFilterSize,
270275
List<AttributeAssociation<FilterArgument>> filterArguments) {
276+
Collection<SelectedField> selections = this.entityFieldsByType.get(entityType);
277+
271278
return zip(
272279
resultSetRequestBuilder.build(
273280
context,
@@ -277,12 +284,14 @@ private Single<EntityRequest> buildEntityRequest(
277284
timeRange,
278285
List.<AttributeAssociation<AggregatableOrderArgument>>of(), // Order does not matter
279286
filterArguments,
280-
this.entityFieldsByType.get(entityType).stream(),
287+
selections.stream(),
281288
Optional.empty()),
289+
metricRequestBuilder.build(context, entityType, selections.stream()),
282290
entityLabelRequestBuilder.buildLabelRequestIfPresentInAnyEntity(
283291
context, entityType, this.entityFieldsByType.get(entityType)),
284-
(resultSetRequest, optionalLabelRequest) ->
285-
new DefaultEntityRequest(entityType, resultSetRequest, optionalLabelRequest));
292+
(resultSetRequest, metricRequestList, optionalLabelRequest) ->
293+
new DefaultEntityRequest(
294+
entityType, resultSetRequest, metricRequestList, optionalLabelRequest));
286295
}
287296

288297
private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
@@ -297,7 +306,7 @@ private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
297306
private static class DefaultEntityRequest implements EntityRequest {
298307
String entityType;
299308
ResultSetRequest<AggregatableOrderArgument> resultSetRequest;
300-
List<MetricRequest> metricRequests = Collections.emptyList(); // Only support attributes for now
309+
List<MetricRequest> metricRequests;
301310
boolean fetchTotal = false; // Not needed for a single entity
302311
EdgeSetGroupRequest incomingEdgeRequests = new EmptyEdgeSetGroupRequest();
303312
EdgeSetGroupRequest outgoingEdgeRequests = new EmptyEdgeSetGroupRequest();

0 commit comments

Comments
 (0)