woodpecker/store/datastore/utils.go

36 lines
655 B
Go
Raw Normal View History

package datastore
2015-09-30 01:21:17 +00:00
import (
"strconv"
"github.com/russross/meddler"
)
// rebind is a helper function that changes the sql
2015-09-30 01:21:17 +00:00
// bind type from ? to $ for postgres queries.
func rebind(query string) string {
2015-09-30 01:21:17 +00:00
if meddler.Default != meddler.PostgreSQL {
return query
}
qb := []byte(query)
// Add space enough for 5 params before we have to allocate
rqb := make([]byte, 0, len(qb)+5)
j := 1
for _, b := range qb {
switch b {
case '?':
2015-09-30 01:21:17 +00:00
rqb = append(rqb, '$')
for _, b := range strconv.Itoa(j) {
rqb = append(rqb, byte(b))
}
j++
case '`':
rqb = append(rqb, ' ')
default:
2015-09-30 01:21:17 +00:00
rqb = append(rqb, b)
}
}
return string(rqb)
}