# README
Go Searchable
Simple search query builder, compatible with squirrel.
Usage
import (
"fmt"
"github.com/bsm/go-searchable"
"github.com/Masterminds/squirrel"
)
var builder = searchable.Builder{
Fields: []searchable.Field{
{SQL: "users.name"},
{SQL: "users.age", Type: searchable.FieldInt},
{SQL: "users.code", Match: searchable.MatchExact},
},
}
func main() {
search := builder.Search([]searchable.Token{
{Term: "alice"},
{Term: "45"},
{Term: "admin", Negate: true},
})
users := squirrel.Select("*").From("users").Where(search)
sql, args, _ := users.ToSql()
fmt.Println(sql)
// => SELECT * FROM users WHERE (((users.name IS NOT NULL AND users.name LIKE $1) OR (users.code IS NOT NULL AND users.code = $2)) AND ((users.name IS NOT NULL AND users.name LIKE $3) OR ...
fmt.Println(args)
// => [%alice% alice %45% 45 45 %admin% admin]
}