1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package arango
- import (
- "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) Bind(name string, value any) *Query {
- query.Params[name] = value
- return query
- }
- func (query *Query) BindMap(params map[string]any) *Query {
- if params != nil {
- for name, value := range params {
- query.Params[name] = value
- }
- }
- return query
- }
- func (query *Query) Copy() *Query {
- newQuery := NewQuery()
- for _, line := range query.Lines {
- newQuery.Lines = append(newQuery.Lines, line)
- }
- for name, value := range query.Params {
- newQuery.Params[name] = value
- }
- return newQuery
- }
- func (query *Query) String() string {
- return strings.Join(query.Lines, "\n")
- }
- func NewQuery() *Query {
- return &Query{
- Lines: []string{},
- Params: map[string]any{},
- }
- }
|