github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/builder/functions.go (about)

     1  package builder
     2  
     3  func Count(canExpr CanExpr) *Function {
     4  	return Func("COUNT", canExpr)
     5  }
     6  
     7  func Avg(canExpr CanExpr) *Function {
     8  	return Func("AVG", canExpr)
     9  }
    10  
    11  func Distinct(canExpr CanExpr) *Function {
    12  	return Func("DISTINCT", canExpr)
    13  }
    14  
    15  func Min(canExpr CanExpr) *Function {
    16  	return Func("MIN", canExpr)
    17  }
    18  
    19  func Max(canExpr CanExpr) *Function {
    20  	return Func("MAX", canExpr)
    21  }
    22  
    23  func First(canExpr CanExpr) *Function {
    24  	return Func("FIRST", canExpr)
    25  }
    26  
    27  func Last(canExpr CanExpr) *Function {
    28  	return Func("LAST", canExpr)
    29  }
    30  
    31  func Sum(canExpr CanExpr) *Function {
    32  	return Func("SUM", canExpr)
    33  }
    34  
    35  func Func(name string, canExpr CanExpr) *Function {
    36  	return &Function{
    37  		Name:    name,
    38  		canExpr: canExpr,
    39  	}
    40  }
    41  
    42  type Function struct {
    43  	Name    string
    44  	canExpr CanExpr
    45  }
    46  
    47  func (f *Function) Expr() *Expression {
    48  	if f.canExpr != nil {
    49  		e := f.canExpr.Expr()
    50  		if e != nil {
    51  			return Expr(f.Name+"("+e.Query+")", e.Args...)
    52  		}
    53  	}
    54  	return nil
    55  }