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 }