* add query builder to facilitate dynamic SQL construction * leverage query builder to refactor user store This is partially setup work for MM-13120, but merged to master to avoid further conflicts. * fix unrelated unit test breakage * documentation tweaks * Apply suggestions from code review Co-Authored-By: lieut-data <jesse.hallam@gmail.com> * prefer comma separated case options to fallthrough * vendor github.com/Masterminds/squirrel and deps * switch to using github.com/Masterminds/squirrel * rm querybuilder
31 строка
572 B
Go
31 строка
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
|
|
}
|