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  }