123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package arango
- import (
- "fmt"
- "strings"
- )
- type Query struct {
- Lines []string
- Params map[string]any
- }
- func (query *Query) Append(line string, values ...any) *Query {
- var params map[string]any = nil
- names := ReadParams(line)
- if len(names) > 0 {
- params = map[string]any{}
- for i, name := range names {
- if i == len(values) {
- break
- }
- params[name] = values[i]
- }
- }
- query.Lines = append(query.Lines, line)
- return query.BindMap(params)
- }
- func (query *Query) Appendf(line string, a ...any) *Query {
- line = fmt.Sprintf(line, a...)
- return query.Append(line)
- }
- func (query *Query) Bind(name string, value any) *Query {
- query.Params[name] = value
- return query
- }
- func (query *Query) BindMap(params map[string]any) *Query {
- for name, value := range params {
- query.Params[name] = value
- }
- return query
- }
- func (query *Query) Copy() *Query {
- newQuery := NewQuery()
- newQuery.Lines = append(newQuery.Lines, query.Lines...)
- for name, value := range query.Params {
- newQuery.Params[name] = value
- }
- return newQuery
- }
- func (query *Query) String() string {
- return strings.Join(query.Lines, "\n")
- }
- func (query *Query) StringLine() string {
- return strings.Join(query.Lines, " ")
- }
- func NewQuery() *Query {
- return &Query{
- Lines: []string{},
- Params: map[string]any{},
- }
- }
|