仓库地址: https://github.com/lxzan/fi
动态
SQL
查询条件构造器, 默认跳过空指针和类型零值
package main
import (
"github.com/lxzan/fi"
)
type Request struct {
StartTime int64 `filter:"cmp=gte"`
EndTime int64 `filter:"cmp=lt"`
Name string `filter:"cmp=eq"`
}
func main() {
v := &Request{StartTime: 1, Name: "aha"}
f := fi.GetFilter(v)
println(f.GetExpression())
}
`start_time` >= ? AND `name` = ?
func (c *Request) GetFilter() *fi.Filter {
return fi.
NewFilter().
Gte("start_time", c.StartTime).
Lt("end_time", c.EndTime).
Eq("name", c.Name)
}
go test -benchmem -run=^$ -bench ^Benchmark github.com/lxzan/fi
goos: darwin
goarch: arm64
pkg: github.com/lxzan/fi
BenchmarkGetFilterReflect-8 501673 2374 ns/op 1376 B/op 37 allocs/op
BenchmarkGetFilterNoReflect-8 1650524 721.8 ns/op 1104 B/op 18 allocs/op
PASS
ok github.com/lxzan/fi 4.035s