6060import org .hypertrace .graphql .entity .schema .argument .EntityTypeStringArgument ;
6161import org .hypertrace .graphql .metric .request .MetricAggregationRequest ;
6262import org .hypertrace .graphql .metric .request .MetricRequest ;
63+ import org .hypertrace .graphql .metric .request .MetricRequestBuilder ;
6364import org .hypertrace .graphql .metric .schema .argument .AggregatableOrderArgument ;
6465
6566@ Slf4j
@@ -70,6 +71,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
7071 private final GraphQlSelectionFinder selectionFinder ;
7172 private final ArgumentDeserializer argumentDeserializer ;
7273 private final ResultSetRequestBuilder resultSetRequestBuilder ;
74+ private final MetricRequestBuilder metricRequestBuilder ;
7375 private final FilterRequestBuilder filterRequestBuilder ;
7476 private final Scheduler boundedIoScheduler ;
7577 private final EntityLabelRequestBuilder entityLabelRequestBuilder ;
@@ -80,6 +82,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
8082 GraphQlSelectionFinder selectionFinder ,
8183 ArgumentDeserializer argumentDeserializer ,
8284 ResultSetRequestBuilder resultSetRequestBuilder ,
85+ MetricRequestBuilder metricRequestBuilder ,
8386 FilterRequestBuilder filterRequestBuilder ,
8487 @ BoundedIoScheduler Scheduler boundedIoScheduler ,
8588 EntityLabelRequestBuilder entityLabelRequestBuilder ) {
@@ -88,6 +91,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
8891 this .selectionFinder = selectionFinder ;
8992 this .argumentDeserializer = argumentDeserializer ;
9093 this .resultSetRequestBuilder = resultSetRequestBuilder ;
94+ this .metricRequestBuilder = metricRequestBuilder ;
9195 this .filterRequestBuilder = filterRequestBuilder ;
9296 this .boundedIoScheduler = boundedIoScheduler ;
9397 this .entityLabelRequestBuilder = entityLabelRequestBuilder ;
@@ -268,6 +272,8 @@ private Single<EntityRequest> buildEntityRequest(
268272 String entityType ,
269273 int entityIdsToFilterSize ,
270274 List <AttributeAssociation <FilterArgument >> filterArguments ) {
275+ Collection <SelectedField > selections = this .entityFieldsByType .get (entityType );
276+
271277 return zip (
272278 resultSetRequestBuilder .build (
273279 context ,
@@ -277,12 +283,14 @@ private Single<EntityRequest> buildEntityRequest(
277283 timeRange ,
278284 List .<AttributeAssociation <AggregatableOrderArgument >>of (), // Order does not matter
279285 filterArguments ,
280- this . entityFieldsByType . get ( entityType ) .stream (),
286+ selections .stream (),
281287 Optional .empty ()),
288+ metricRequestBuilder .build (context , entityType , selections .stream ()),
282289 entityLabelRequestBuilder .buildLabelRequestIfPresentInAnyEntity (
283290 context , entityType , this .entityFieldsByType .get (entityType )),
284- (resultSetRequest , optionalLabelRequest ) ->
285- new DefaultEntityRequest (entityType , resultSetRequest , optionalLabelRequest ));
291+ (resultSetRequest , metricRequestList , optionalLabelRequest ) ->
292+ new DefaultEntityRequest (
293+ entityType , resultSetRequest , metricRequestList , optionalLabelRequest ));
286294 }
287295
288296 private Single <List <AttributeAssociation <FilterArgument >>> buildIdFilter (
@@ -297,7 +305,7 @@ private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
297305 private static class DefaultEntityRequest implements EntityRequest {
298306 String entityType ;
299307 ResultSetRequest <AggregatableOrderArgument > resultSetRequest ;
300- List <MetricRequest > metricRequests = Collections . emptyList (); // Only support attributes for now
308+ List <MetricRequest > metricRequests ;
301309 boolean fetchTotal = false ; // Not needed for a single entity
302310 EdgeSetGroupRequest incomingEdgeRequests = new EmptyEdgeSetGroupRequest ();
303311 EdgeSetGroupRequest outgoingEdgeRequests = new EmptyEdgeSetGroupRequest ();
0 commit comments