//CodeGenStart public bool VisitExprAggregateFunction(ExprAggregateFunction expr, TCtx arg) { var res = this.Visit(expr, "AggregateFunction", arg, out var argOut) && this.Accept("Name", expr.Name, argOut) && this.Accept("Expression", expr.Expression, argOut); this.VisitPlainProperty("IsDistinct", expr.IsDistinct, argOut); this._visitor.EndVisitExpr(expr, arg); return(res); }
//Functions public bool VisitExprAggregateFunction(ExprAggregateFunction exprAggregateFunction, IExpr?parent) { exprAggregateFunction.Name.Accept(this, exprAggregateFunction); this.Builder.Append('('); if (exprAggregateFunction.IsDistinct) { this.Builder.Append("DISTINCT "); } exprAggregateFunction.Expression.Accept(this, exprAggregateFunction); this.Builder.Append(')'); return(true); }
//CodeGenStart public static ExprAggregateFunction WithName(this ExprAggregateFunction original, ExprFunctionName newName) => new ExprAggregateFunction(name: newName, expression: original.Expression, isDistinct: original.IsDistinct);
public static ExprAggregateFunction WithIsDistinct(this ExprAggregateFunction original, Boolean newIsDistinct) => new ExprAggregateFunction(name: original.Name, expression: original.Expression, isDistinct: newIsDistinct);
public static ExprAggregateFunction WithExpression(this ExprAggregateFunction original, ExprValue newExpression) => new ExprAggregateFunction(name: original.Name, expression: newExpression, isDistinct: original.IsDistinct);