AQL query builder for Go https://pkg.go.dev/github.com/annybs/go-aql
|
10 ماه پیش | |
---|---|---|
.github | 10 ماه پیش | |
.gitignore | 10 ماه پیش | |
LICENSE.md | 11 ماه پیش | |
README.md | 10 ماه پیش | |
go.mod | 10 ماه پیش | |
operator.go | 1 سال پیش | |
params.go | 1 سال پیش | |
params_test.go | 1 سال پیش | |
query.go | 1 سال پیش | |
query_test.go | 1 سال پیش | |
sort.go | 1 سال پیش |
This package offers a simple syntax to construct AQL queries with bind parameters, which can be used with the official ArangoDB driver.
While it's entirely possible to write static queries and bind parameters externally, sometimes you need more flexibility to create queries, particularly if you are providing a consumer API with querying capabilities. See also:
This package allows you to build your query piece-by-piece and attach parameters in whatever way serves you best.
:warning: This package has not yet been tested with the v2 driver.
In this example, the tastiness
value is bound to a parameter while constructing the query.
package main
import (
"errors"
"fmt"
"os"
"strconv"
"github.com/annybs/go/arango"
)
func main() {
query := arango.NewQuery().Append("FOR f IN @@foodColl", "food")
tastiness := 1
if len(os.Args) > 1 {
t, err := strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println(errors.New("invalid minimum tastiness"))
os.Exit(1)
}
tastiness = t
}
query.
Append("FILTER f.tastiness > @tastiness", tastiness).
Append("RETURN f")
fmt.Println("Query:", query.String())
fmt.Println("Params:", query.Params)
}
For simpler cases, you may prefer to construct your query first and then bind parameters separately:
package main
import (
"errors"
"fmt"
"os"
"strconv"
"github.com/annybs/go/arango"
)
func main() {
query := arango.NewQuery().
Append("FOR f IN @@foodColl", "food").
Append("FILTER f.tastiness > @tastiness").
Append("RETURN f")
tastiness := 1
if len(os.Args) > 1 {
t, err := strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println(errors.New("invalid minimum tastiness"))
os.Exit(1)
}
tastiness = t
}
query.Bind("tastiness", tastiness)
fmt.Println("Query:", query.String())
fmt.Println("Params:", query.Params)
}
See LICENSE.md