Categorygithub.com/bsm/go-searchable
repositorypackage
0.2.0
Repository: https://github.com/bsm/go-searchable.git
Documentation: pkg.go.dev

# README

Go Searchable

Go ReferenceLicense

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]
}