in soql/formatter.go [76:115]
func (b *Query) Format() (string, error) {
if b.objectType == "" {
return "", errors.New("builder: object type can not be an empty string")
}
if len(b.fieldList) == 0 {
return "", errors.New("builder: field list must be have fields present")
}
soql := "SELECT " + strings.Join(b.fieldList, ",")
if b.subQuery != nil {
for _, query := range b.subQuery {
var sub string
var err error
if sub, err = query.Format(); err == nil {
soql += fmt.Sprintf(",(%s)", sub)
} else {
return "", err
}
}
}
soql += " FROM " + b.objectType
if b.where != nil {
soql += " " + b.where.Clause()
}
if b.order != nil {
order, err := b.order.Order()
if err == nil {
soql += " " + order
} else {
return "", err
}
}
if b.limit > 0 {
soql += fmt.Sprintf(" LIMIT %d", b.limit)
}
if b.offset > 0 {
soql += fmt.Sprintf(" OFFSET %d", b.offset)
}
return soql, nil
}