github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/go-xorm/builder/builder_select.go (about) 1 package builder 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 func (b *Builder) selectWriteTo(w Writer) error { 9 if len(b.tableName) <= 0 { 10 return errors.New("no table indicated") 11 } 12 13 if _, err := fmt.Fprint(w, "SELECT "); err != nil { 14 return err 15 } 16 if len(b.selects) > 0 { 17 for i, s := range b.selects { 18 if _, err := fmt.Fprint(w, s); err != nil { 19 return err 20 } 21 if i != len(b.selects)-1 { 22 if _, err := fmt.Fprint(w, ","); err != nil { 23 return err 24 } 25 } 26 } 27 } else { 28 if _, err := fmt.Fprint(w, "*"); err != nil { 29 return err 30 } 31 } 32 33 if _, err := fmt.Fprintf(w, " FROM %s", b.tableName); err != nil { 34 return err 35 } 36 37 for _, v := range b.joins { 38 fmt.Fprintf(w, " %s JOIN %s ON ", v.joinType, v.joinTable) 39 if err := v.joinCond.WriteTo(w); err != nil { 40 return err 41 } 42 } 43 44 if _, err := fmt.Fprint(w, " WHERE "); err != nil { 45 return err 46 } 47 48 return b.cond.WriteTo(w) 49 }