Skip to content

Commit d0135a5

Browse files
fix: send alias on order by expression (#225)
1 parent cd911fb commit d0135a5

File tree

3 files changed

+19
-31
lines changed

3 files changed

+19
-31
lines changed

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/AggregatableOrderByExpressionListConverter.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import io.reactivex.rxjava3.core.Maybe;
66
import io.reactivex.rxjava3.core.Observable;
77
import io.reactivex.rxjava3.core.Single;
8+
import java.util.Collections;
89
import java.util.List;
9-
import java.util.Objects;
1010
import java.util.Optional;
1111
import java.util.stream.Collectors;
1212
import javax.inject.Inject;
@@ -19,6 +19,7 @@
1919
import org.hypertrace.gateway.service.v1.common.Expression;
2020
import org.hypertrace.gateway.service.v1.common.OrderByExpression;
2121
import org.hypertrace.gateway.service.v1.common.SortOrder;
22+
import org.hypertrace.graphql.metric.request.MetricAggregationRequestBuilder;
2223
import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument;
2324

2425
class AggregatableOrderByExpressionListConverter
@@ -31,18 +32,21 @@ class AggregatableOrderByExpressionListConverter
3132
private final Converter<OrderDirection, SortOrder> sortOrderConverter;
3233
private final Converter<MetricAggregationType, AttributeModelMetricAggregationType>
3334
aggregationTypeConverter;
35+
private final MetricAggregationRequestBuilder metricAggregationRequestBuilder;
3436

3537
@Inject
3638
AggregatableOrderByExpressionListConverter(
3739
Converter<AttributeAssociation<AttributeExpression>, Expression> columnExpressionConverter,
3840
MetricAggregationExpressionConverter metricAggregationExpressionConverter,
3941
Converter<OrderDirection, SortOrder> sortOrderConverter,
4042
Converter<MetricAggregationType, AttributeModelMetricAggregationType>
41-
aggregationTypeConverter) {
43+
aggregationTypeConverter,
44+
MetricAggregationRequestBuilder metricAggregationRequestBuilder) {
4245
this.columnExpressionConverter = columnExpressionConverter;
4346
this.metricAggregationExpressionConverter = metricAggregationExpressionConverter;
4447
this.sortOrderConverter = sortOrderConverter;
4548
this.aggregationTypeConverter = aggregationTypeConverter;
49+
this.metricAggregationRequestBuilder = metricAggregationRequestBuilder;
4650
}
4751

4852
@Override
@@ -66,17 +70,20 @@ private Single<Expression> buildSelectionExpression(
6670
AttributeAssociation<AggregatableOrderArgument> orderArgument) {
6771
AttributeAssociation<AttributeExpression> attributeExpressionAssociation =
6872
this.buildAttributeExpressionAssociation(orderArgument);
73+
List<Object> aggregationArguments =
74+
Optional.<Object>ofNullable(orderArgument.value().size())
75+
.map(List::of)
76+
.orElseGet(Collections::emptyList);
6977
return Maybe.fromOptional(Optional.ofNullable(orderArgument.value().aggregation()))
7078
.flatMapSingle(this.aggregationTypeConverter::convert)
71-
.flatMapSingle(
79+
.map(
7280
aggregationType ->
73-
orderArgument.value().size() == null
74-
? this.metricAggregationExpressionConverter.convertForNoArgsOrAlias(
75-
attributeExpressionAssociation, aggregationType)
76-
: this.metricAggregationExpressionConverter.convertForArgsButNoAlias(
77-
attributeExpressionAssociation,
78-
aggregationType,
79-
List.of(Objects.requireNonNull(orderArgument.value().size()))))
81+
this.metricAggregationRequestBuilder.build(
82+
attributeExpressionAssociation, aggregationType, aggregationArguments))
83+
.flatMapSingle(
84+
aggregationRequest ->
85+
this.metricAggregationExpressionConverter.convert(
86+
aggregationRequest, aggregationRequest.alias()))
8087
.switchIfEmpty(this.columnExpressionConverter.convert(attributeExpressionAssociation));
8188
}
8289

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/GatewayMetricUtilsModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.hypertrace.gateway.service.v1.common.Value;
2525
import org.hypertrace.gateway.service.v1.entity.Entity;
2626
import org.hypertrace.graphql.metric.request.MetricAggregationRequest;
27+
import org.hypertrace.graphql.metric.request.MetricAggregationRequestBuilder;
2728
import org.hypertrace.graphql.metric.request.MetricRequest;
2829
import org.hypertrace.graphql.metric.request.MetricSeriesRequest;
2930
import org.hypertrace.graphql.metric.schema.BaselinedMetricAggregationContainer;
@@ -76,5 +77,6 @@ protected void configure() {
7677
Key.get(
7778
new TypeLiteral<
7879
Converter<MetricAggregationType, AttributeModelMetricAggregationType>>() {}));
80+
requireBinding(MetricAggregationRequestBuilder.class);
7981
}
8082
}

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/MetricAggregationExpressionConverter.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import static io.reactivex.rxjava3.core.Single.zip;
44

5-
import com.google.protobuf.StringValue;
65
import io.reactivex.rxjava3.core.Observable;
76
import io.reactivex.rxjava3.core.Single;
87
import java.util.Collection;
9-
import java.util.Collections;
108
import java.util.List;
119
import java.util.Set;
1210
import java.util.stream.Collectors;
@@ -52,25 +50,6 @@ Single<Expression> convert(MetricAggregationRequest metricAggregation, String al
5250
.map(functionExpression -> Expression.newBuilder().setFunction(functionExpression).build());
5351
}
5452

55-
Single<Expression> convertForNoArgsOrAlias(
56-
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
57-
AttributeModelMetricAggregationType aggregationType) {
58-
return convertForArgsButNoAlias(
59-
attributeExpressionAssociation, aggregationType, Collections.emptyList());
60-
}
61-
62-
Single<Expression> convertForArgsButNoAlias(
63-
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
64-
AttributeModelMetricAggregationType aggregationType,
65-
List<Object> arguments) {
66-
return this.buildAggregationFunctionExpression(
67-
attributeExpressionAssociation,
68-
aggregationType,
69-
arguments,
70-
StringValue.getDefaultInstance().getValue())
71-
.map(functionExpression -> Expression.newBuilder().setFunction(functionExpression).build());
72-
}
73-
7453
private Single<FunctionExpression> buildAggregationFunctionExpression(
7554
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
7655
AttributeModelMetricAggregationType aggregationType,

0 commit comments

Comments
 (0)