github.com/kunlun-qilian/sqlx/v3@v3.0.0/builder/alias.go (about) 1 package builder 2 3 import ( 4 "context" 5 ) 6 7 func Alias(expr SqlExpr, name string) *exAlias { 8 return &exAlias{ 9 name: name, 10 SqlExpr: expr, 11 } 12 } 13 14 type exAlias struct { 15 name string 16 SqlExpr 17 } 18 19 func (alias *exAlias) IsNil() bool { 20 return alias == nil || alias.name == "" || IsNilExpr(alias.SqlExpr) 21 } 22 23 func (alias *exAlias) Ex(ctx context.Context) *Ex { 24 return Expr("? AS ?", alias.SqlExpr, Expr(alias.name)).Ex(ContextWithToggles(ctx, Toggles{ 25 ToggleNeedAutoAlias: false, 26 })) 27 } 28 29 func MultiMayAutoAlias(columns ...SqlExpr) *exMayAutoAlias { 30 return &exMayAutoAlias{ 31 columns: columns, 32 } 33 } 34 35 type exMayAutoAlias struct { 36 columns []SqlExpr 37 } 38 39 func (alias *exMayAutoAlias) IsNil() bool { 40 return alias == nil || len(alias.columns) == 0 41 } 42 43 func (alias *exMayAutoAlias) Ex(ctx context.Context) *Ex { 44 e := Expr("") 45 e.Grow(1) 46 47 RangeNotNilExpr(alias.columns, func(expr SqlExpr, i int) { 48 if i > 0 { 49 e.WriteQuery(", ") 50 } 51 e.WriteExpr(expr) 52 }) 53 54 return e.Ex(ContextWithToggles(ctx, Toggles{ 55 ToggleNeedAutoAlias: true, 56 })) 57 }