Refactor record repo
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package rh
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"gopkg.in/Masterminds/squirrel.v1"
|
||||
)
|
||||
|
||||
@@ -44,3 +46,37 @@ func (f squirrelFunction) ToSql() (sql string, args []interface{}, err error) {
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
type (
|
||||
squirrelConcatExpr struct {
|
||||
parts []string
|
||||
args []interface{}
|
||||
err error
|
||||
}
|
||||
)
|
||||
|
||||
func SquirrelConcatExpr(args ...interface{}) squirrel.Sqlizer {
|
||||
var w = new(squirrelConcatExpr)
|
||||
|
||||
for _, a := range args {
|
||||
if w.err != nil {
|
||||
break
|
||||
}
|
||||
|
||||
switch o := a.(type) {
|
||||
case string:
|
||||
w.parts = append(w.parts, o)
|
||||
case squirrel.Sqlizer:
|
||||
p, a, err := o.ToSql()
|
||||
w.parts = append(w.parts, p)
|
||||
w.args = append(w.args, a...)
|
||||
w.err = err
|
||||
}
|
||||
}
|
||||
|
||||
return w
|
||||
}
|
||||
|
||||
func (w *squirrelConcatExpr) ToSql() (string, []interface{}, error) {
|
||||
return strings.Join(w.parts, ""), w.args, w.err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user