Skip to content

Commit

Permalink
chore | adding the support for passing alias in case of functions (#235)
Browse files Browse the repository at this point in the history
* chore | adding the support for passing alias in case of functions
  • Loading branch information
aman-bansal authored Jun 17, 2024
1 parent 3b9a335 commit 2553d2d
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@ private SelectionArguments getSelectionArguments(SelectedField selectedField) {
new SelectionArguments(
attributeExpression,
aggregationType,
this.getArguments(selectedField, aggregationType)))
this.getArguments(selectedField, aggregationType),
selectedField.getAlias()))
.orElse(new SelectionArguments(attributeExpression));
}

Expand All @@ -145,7 +146,8 @@ private Single<MetricAggregationRequest> buildAggregationRequest(
this.aggregationRequestBuilder.build(
attributeExpressionAttributeAssociation,
arguments.getAggregationType(),
arguments.getAggregationArguments()));
arguments.getAggregationArguments(),
arguments.getAlias()));
}

private List<Object> getArguments(
Expand Down Expand Up @@ -188,16 +190,35 @@ private static class SelectionArguments {
@Nonnull AttributeExpression attributeExpression;
@Nullable AttributeModelMetricAggregationType aggregationType;
@Nullable List<Object> aggregationArguments;
@Nullable String alias;

SelectionArguments(AttributeExpression attributeExpression) {
this(SelectionType.ATTRIBUTE, attributeExpression, null, null);
this(SelectionType.ATTRIBUTE, attributeExpression, null, null, null);
}

SelectionArguments(
AttributeExpression attributeExpression,
AttributeModelMetricAggregationType aggregationType,
List<Object> aggregationArguments) {
this(SelectionType.AGGREGATION, attributeExpression, aggregationType, aggregationArguments);
this(
SelectionType.AGGREGATION,
attributeExpression,
aggregationType,
aggregationArguments,
null);
}

SelectionArguments(
AttributeExpression attributeExpression,
AttributeModelMetricAggregationType aggregationType,
List<Object> aggregationArguments,
String alias) {
this(
SelectionType.AGGREGATION,
attributeExpression,
aggregationType,
aggregationArguments,
alias);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,25 @@ public MetricAggregationRequest build(
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
AttributeModelMetricAggregationType aggregationType,
List<Object> arguments) {
return this.build(attributeExpressionAssociation, aggregationType, arguments, false);
return this.build(attributeExpressionAssociation, aggregationType, arguments, false, null);
}

public MetricAggregationRequest build(
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
AttributeModelMetricAggregationType aggregationType,
List<Object> arguments,
String alias) {
return this.build(attributeExpressionAssociation, aggregationType, arguments, false, alias);
}

private MetricAggregationRequest build(
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
AttributeModelMetricAggregationType aggregationType,
List<Object> arguments,
boolean baseline) {
boolean baseline,
String alias) {
return new DefaultMetricAggregationRequest(
attributeExpressionAssociation, aggregationType, arguments, baseline);
attributeExpressionAssociation, aggregationType, arguments, baseline, alias);
}

private MetricAggregationRequest requestForAggregationField(
Expand All @@ -105,7 +114,8 @@ private MetricAggregationRequest requestForAggregationField(
.findSelections(
field.getSelectionSet(), SelectionQuery.namedChild(BASELINE_AGGREGATION_VALUE))
.findAny()
.isPresent());
.isPresent(),
field.getAlias());
}

private Optional<AttributeModelMetricAggregationType> getAggregationTypeForField(
Expand Down Expand Up @@ -181,9 +191,14 @@ private static class DefaultMetricAggregationRequest implements MetricAggregatio
AttributeModelMetricAggregationType aggregation;
List<Object> arguments;
boolean baseline;
String alias;

@Override
public String alias() {
if (alias != null) {
return alias;
}

return String.format(
"%s_%s_%s",
this.aggregation.name(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,10 @@ MetricAggregationRequest build(
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
AttributeModelMetricAggregationType aggregationType,
List<Object> arguments);

MetricAggregationRequest build(
AttributeAssociation<AttributeExpression> attributeExpressionAssociation,
AttributeModelMetricAggregationType aggregationType,
List<Object> arguments,
String alias);
}

0 comments on commit 2553d2d

Please sign in to comment.