fix parsing of collection bind params

This commit is contained in:
Aneurin Barker Snook
2023-10-13 07:59:04 +01:00
parent 7ae2ef1d56
commit 6f85786542
3 changed files with 12 additions and 12 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ import (
)
// https://docs.arangodb.com/3.11/aql/fundamentals/bind-parameters/#syntax
var paramRegexp = regexp.MustCompile("@{1,2}([A-z0-9_]+)")
var paramRegexp = regexp.MustCompile("@(@?[A-z0-9_]+)")
// ReadParams reads out named parameters from an AQL string.
func ReadParams(input string) []string {
+1 -1
View File
@@ -18,7 +18,7 @@ func TestReadParams(t *testing.T) {
},
{
Input: "FOR doc IN @@collection FILTER doc.title == @title RETURN doc",
Output: []string{"collection", "title"},
Output: []string{"@collection", "title"},
},
}
+10 -10
View File
@@ -28,8 +28,8 @@ func TestQueryAppend(t *testing.T) {
FILTER doc.title == @title
RETURN doc`,
ExpectedParams: map[string]any{
"collection": "recipes",
"title": "Spaghetti",
"@collection": "recipes",
"title": "Spaghetti",
},
},
// Append with too many parameters
@@ -42,8 +42,8 @@ RETURN doc`,
FILTER doc.title == @title
RETURN doc`,
ExpectedParams: map[string]any{
"collection": "recipes",
"title": "Spaghetti",
"@collection": "recipes",
"title": "Spaghetti",
},
},
// Append without parameters and bind after
@@ -52,14 +52,14 @@ RETURN doc`,
Append("FOR doc IN @@collection").
Append("FILTER doc.title == @title").
Append("RETURN doc").
Bind("collection", "recipes").
Bind("@collection", "recipes").
Bind("title", "Spaghetti"),
ExpectedStr: `FOR doc IN @@collection
FILTER doc.title == @title
RETURN doc`,
ExpectedParams: map[string]any{
"collection": "recipes",
"title": "Spaghetti",
"@collection": "recipes",
"title": "Spaghetti",
},
},
// Append and bind map
@@ -68,13 +68,13 @@ RETURN doc`,
Append("FOR doc IN @@collection").
Append("FILTER doc.title == @title").
Append("RETURN doc").
BindMap(map[string]any{"collection": "recipes", "title": "Spaghetti"}),
BindMap(map[string]any{"@collection": "recipes", "title": "Spaghetti"}),
ExpectedStr: `FOR doc IN @@collection
FILTER doc.title == @title
RETURN doc`,
ExpectedParams: map[string]any{
"collection": "recipes",
"title": "Spaghetti",
"@collection": "recipes",
"title": "Spaghetti",
},
},
// Append and Appendf