Skip to content

sashadw/go-searchable

 
 

Repository files navigation

Go Searchable

Build Status GoDoc Go Report Card License

Simple search query builder on top of squirrel.

Usage

import (
  "fmt"

  "github.com/bsm/go-searchable"
  "github.com/Masterminds/squirrel"
)

var builder = searchable.Builder{
  {SQL: "users.name"},
  {SQL: "users.age", Type: searchable.TypeInt},
  {SQL: "users.code", Exact: true},
}

func main() {
  search := builder.Search([]string{"alice", "45", "-admin"})
  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 ?) OR (users.code IS NOT NULL AND users.code = ?)) AND ((users.name IS NOT NULL AND users.name LIKE ?) OR ...
  fmt.Println(args)
  // => [%alice% alice %45% 45 45 %admin% admin]
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 98.8%
  • Makefile 1.2%