Skip to content

Commit 2553d2d

Browse files
authored
chore | adding the support for passing alias in case of functions (#235)
* chore | adding the support for passing alias in case of functions
1 parent 3b9a335 commit 2553d2d

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreSelectionRequestBuilder.java

+25-4
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ private SelectionArguments getSelectionArguments(SelectedField selectedField) {
119119
new SelectionArguments(
120120
attributeExpression,
121121
aggregationType,
122-
this.getArguments(selectedField, aggregationType)))
122+
this.getArguments(selectedField, aggregationType),
123+
selectedField.getAlias()))
123124
.orElse(new SelectionArguments(attributeExpression));
124125
}
125126

@@ -145,7 +146,8 @@ private Single<MetricAggregationRequest> buildAggregationRequest(
145146
this.aggregationRequestBuilder.build(
146147
attributeExpressionAttributeAssociation,
147148
arguments.getAggregationType(),
148-
arguments.getAggregationArguments()));
149+
arguments.getAggregationArguments(),
150+
arguments.getAlias()));
149151
}
150152

151153
private List<Object> getArguments(
@@ -188,16 +190,35 @@ private static class SelectionArguments {
188190
@Nonnull AttributeExpression attributeExpression;
189191
@Nullable AttributeModelMetricAggregationType aggregationType;
190192
@Nullable List<Object> aggregationArguments;
193+
@Nullable String alias;
191194

192195
SelectionArguments(AttributeExpression attributeExpression) {
193-
this(SelectionType.ATTRIBUTE, attributeExpression, null, null);
196+
this(SelectionType.ATTRIBUTE, attributeExpression, null, null, null);
194197
}
195198

196199
SelectionArguments(
197200
AttributeExpression attributeExpression,
198201
AttributeModelMetricAggregationType aggregationType,
199202
List<Object> aggregationArguments) {
200-
this(SelectionType.AGGREGATION, attributeExpression, aggregationType, aggregationArguments);
203+
this(
204+
SelectionType.AGGREGATION,
205+
attributeExpression,
206+
aggregationType,
207+
aggregationArguments,
208+
null);
209+
}
210+
211+
SelectionArguments(
212+
AttributeExpression attributeExpression,
213+
AttributeModelMetricAggregationType aggregationType,
214+
List<Object> aggregationArguments,
215+
String alias) {
216+
this(
217+
SelectionType.AGGREGATION,
218+
attributeExpression,
219+
aggregationType,
220+
aggregationArguments,
221+
alias);
201222
}
202223
}
203224
}

hypertrace-graphql-metric-schema/src/main/java/org/hypertrace/graphql/metric/request/DefaultMetricAggregationRequestBuilder.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,25 @@ public MetricAggregationRequest build(
8080
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
8181
AttributeModelMetricAggregationType aggregationType,
8282
List<Object> arguments) {
83-
return this.build(attributeExpressionAssociation, aggregationType, arguments, false);
83+
return this.build(attributeExpressionAssociation, aggregationType, arguments, false, null);
84+
}
85+
86+
public MetricAggregationRequest build(
87+
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
88+
AttributeModelMetricAggregationType aggregationType,
89+
List<Object> arguments,
90+
String alias) {
91+
return this.build(attributeExpressionAssociation, aggregationType, arguments, false, alias);
8492
}
8593

8694
private MetricAggregationRequest build(
8795
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
8896
AttributeModelMetricAggregationType aggregationType,
8997
List<Object> arguments,
90-
boolean baseline) {
98+
boolean baseline,
99+
String alias) {
91100
return new DefaultMetricAggregationRequest(
92-
attributeExpressionAssociation, aggregationType, arguments, baseline);
101+
attributeExpressionAssociation, aggregationType, arguments, baseline, alias);
93102
}
94103

95104
private MetricAggregationRequest requestForAggregationField(
@@ -105,7 +114,8 @@ private MetricAggregationRequest requestForAggregationField(
105114
.findSelections(
106115
field.getSelectionSet(), SelectionQuery.namedChild(BASELINE_AGGREGATION_VALUE))
107116
.findAny()
108-
.isPresent());
117+
.isPresent(),
118+
field.getAlias());
109119
}
110120

111121
private Optional<AttributeModelMetricAggregationType> getAggregationTypeForField(
@@ -181,9 +191,14 @@ private static class DefaultMetricAggregationRequest implements MetricAggregatio
181191
AttributeModelMetricAggregationType aggregation;
182192
List<Object> arguments;
183193
boolean baseline;
194+
String alias;
184195

185196
@Override
186197
public String alias() {
198+
if (alias != null) {
199+
return alias;
200+
}
201+
187202
return String.format(
188203
"%s_%s_%s",
189204
this.aggregation.name(),

hypertrace-graphql-metric-schema/src/main/java/org/hypertrace/graphql/metric/request/MetricAggregationRequestBuilder.java

+6
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,10 @@ MetricAggregationRequest build(
2424
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
2525
AttributeModelMetricAggregationType aggregationType,
2626
List<Object> arguments);
27+
28+
MetricAggregationRequest build(
29+
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
30+
AttributeModelMetricAggregationType aggregationType,
31+
List<Object> arguments,
32+
String alias);
2733
}

0 commit comments

Comments
 (0)