31 lines
572 B
Go
31 lines
572 B
Go
|
package squirrel
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
type wherePart part
|
||
|
|
||
|
func newWherePart(pred interface{}, args ...interface{}) Sqlizer {
|
||
|
return &wherePart{pred: pred, args: args}
|
||
|
}
|
||
|
|
||
|
func (p wherePart) ToSql() (sql string, args []interface{}, err error) {
|
||
|
switch pred := p.pred.(type) {
|
||
|
case nil:
|
||
|
// no-op
|
||
|
case rawSqlizer:
|
||
|
return pred.toSqlRaw()
|
||
|
case Sqlizer:
|
||
|
return pred.ToSql()
|
||
|
case map[string]interface{}:
|
||
|
return Eq(pred).ToSql()
|
||
|
case string:
|
||
|
sql = pred
|
||
|
args = p.args
|
||
|
default:
|
||
|
err = fmt.Errorf("expected string-keyed map or string, not %T", pred)
|
||
|
}
|
||
|
return
|
||
|
}
|