add query appendf

This commit is contained in:
Aneurin Barker Snook
2023-10-08 22:50:24 +01:00
parent a3decd74c2
commit 25b14743be
2 changed files with 23 additions and 0 deletions
+13
View File
@@ -1,6 +1,7 @@
package arango package arango
import ( import (
"fmt"
"strings" "strings"
) )
@@ -36,6 +37,18 @@ func (query *Query) Append(line string, values ...any) *Query {
return query.BindMap(params) return query.BindMap(params)
} }
// Appendf adds a line to the query, replacing values directly into the string using standard formatting syntax.
// This is a shorthand for:
//
// // query *Query
// query.Append(fmt.Sprintf("my format (%s)", "example"))
//
// This method does not attach values to bind parameters.
func (query *Query) Appendf(line string, a ...any) *Query {
line = fmt.Sprintf(line, a...)
return query.Append(line)
}
// Bind binds a value to a bind parameter. // Bind binds a value to a bind parameter.
func (query *Query) Bind(name string, value any) *Query { func (query *Query) Bind(name string, value any) *Query {
query.Params[name] = value query.Params[name] = value
+10
View File
@@ -77,6 +77,16 @@ RETURN doc`,
"title": "Spaghetti", "title": "Spaghetti",
}, },
}, },
// Append and Appendf
{
Input: NewQuery().
Appendf("FOR doc IN %s FILTER doc.title == @title RETURN doc", "recipes").
Bind("title", "Spaghetti"),
ExpectedStr: `FOR doc IN recipes FILTER doc.title == @title RETURN doc`,
ExpectedParams: map[string]any{
"title": "Spaghetti",
},
},
} }
for n, tc := range testCases { for n, tc := range testCases {