29
29
import java .util .Set ;
30
30
import java .util .stream .Collector ;
31
31
import java .util .stream .Collectors ;
32
+ import java .util .stream .Stream ;
32
33
import javax .inject .Inject ;
33
34
import lombok .AllArgsConstructor ;
34
35
import lombok .Value ;
60
61
import org .hypertrace .graphql .entity .schema .argument .EntityTypeStringArgument ;
61
62
import org .hypertrace .graphql .metric .request .MetricAggregationRequest ;
62
63
import org .hypertrace .graphql .metric .request .MetricRequest ;
64
+ import org .hypertrace .graphql .metric .request .MetricRequestBuilder ;
63
65
import org .hypertrace .graphql .metric .schema .argument .AggregatableOrderArgument ;
64
66
65
67
@ Slf4j
@@ -70,6 +72,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
70
72
private final GraphQlSelectionFinder selectionFinder ;
71
73
private final ArgumentDeserializer argumentDeserializer ;
72
74
private final ResultSetRequestBuilder resultSetRequestBuilder ;
75
+ private final MetricRequestBuilder metricRequestBuilder ;
73
76
private final FilterRequestBuilder filterRequestBuilder ;
74
77
private final Scheduler boundedIoScheduler ;
75
78
private final EntityLabelRequestBuilder entityLabelRequestBuilder ;
@@ -80,6 +83,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
80
83
GraphQlSelectionFinder selectionFinder ,
81
84
ArgumentDeserializer argumentDeserializer ,
82
85
ResultSetRequestBuilder resultSetRequestBuilder ,
86
+ MetricRequestBuilder metricRequestBuilder ,
83
87
FilterRequestBuilder filterRequestBuilder ,
84
88
@ BoundedIoScheduler Scheduler boundedIoScheduler ,
85
89
EntityLabelRequestBuilder entityLabelRequestBuilder ) {
@@ -88,6 +92,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
88
92
this .selectionFinder = selectionFinder ;
89
93
this .argumentDeserializer = argumentDeserializer ;
90
94
this .resultSetRequestBuilder = resultSetRequestBuilder ;
95
+ this .metricRequestBuilder = metricRequestBuilder ;
91
96
this .filterRequestBuilder = filterRequestBuilder ;
92
97
this .boundedIoScheduler = boundedIoScheduler ;
93
98
this .entityLabelRequestBuilder = entityLabelRequestBuilder ;
@@ -268,6 +273,8 @@ private Single<EntityRequest> buildEntityRequest(
268
273
String entityType ,
269
274
int entityIdsToFilterSize ,
270
275
List <AttributeAssociation <FilterArgument >> filterArguments ) {
276
+ Collection <SelectedField > selections = this .entityFieldsByType .get (entityType );
277
+
271
278
return zip (
272
279
resultSetRequestBuilder .build (
273
280
context ,
@@ -277,12 +284,14 @@ private Single<EntityRequest> buildEntityRequest(
277
284
timeRange ,
278
285
List .<AttributeAssociation <AggregatableOrderArgument >>of (), // Order does not matter
279
286
filterArguments ,
280
- this . entityFieldsByType . get ( entityType ) .stream (),
287
+ selections .stream (),
281
288
Optional .empty ()),
289
+ metricRequestBuilder .build (context , entityType , selections .stream ()),
282
290
entityLabelRequestBuilder .buildLabelRequestIfPresentInAnyEntity (
283
291
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 ));
286
295
}
287
296
288
297
private Single <List <AttributeAssociation <FilterArgument >>> buildIdFilter (
@@ -297,7 +306,7 @@ private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
297
306
private static class DefaultEntityRequest implements EntityRequest {
298
307
String entityType ;
299
308
ResultSetRequest <AggregatableOrderArgument > resultSetRequest ;
300
- List <MetricRequest > metricRequests = Collections . emptyList (); // Only support attributes for now
309
+ List <MetricRequest > metricRequests ;
301
310
boolean fetchTotal = false ; // Not needed for a single entity
302
311
EdgeSetGroupRequest incomingEdgeRequests = new EmptyEdgeSetGroupRequest ();
303
312
EdgeSetGroupRequest outgoingEdgeRequests = new EmptyEdgeSetGroupRequest ();
0 commit comments