30 lines
572 B
Go
30 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
|
|
}
|