You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ly...@apache.org on 2022/05/12 14:25:06 UTC
[tinkerpop] branch 3.5-dev updated: gremlin-go aliasing examples in README and example.go
This is an automated email from the ASF dual-hosted git repository.
lyndonb pushed a commit to branch 3.5-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.5-dev by this push:
new 29600e361a gremlin-go aliasing examples in README and example.go
29600e361a is described below
commit 29600e361ae059b56bd2719b06fe4242e24cf0e5
Author: Valentyn Kahamlyk <vk...@users.noreply.github.com>
AuthorDate: Thu May 12 07:25:01 2022 -0700
gremlin-go aliasing examples in README and example.go
authored-by: valentynk <va...@bitquilltech.com>
---
docs/src/reference/gremlin-variants.asciidoc | 42 ++++++++++++++++++++++++++
gremlin-go/README.md | 44 ++++++++++++++++++++++++++++
gremlin-go/example/example.go | 7 ++++-
3 files changed, 92 insertions(+), 1 deletion(-)
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 924974493e..bd3eab5016 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -1658,6 +1658,48 @@ capital letter in order to be public:
*Tokens* - <<a-note-on-scopes,Scope.Global>>, <<a-note-on-scopes,Scope.Local>>
+[[gremlin-go-aliases]]
+=== Aliases
+To make the code more readable and close to the Gremlin query language), you can use aliases. These aliases can be named with capital letters to be consistent with non-aliased steps but will result in exported variables which could be problematic if not being used in a top-level program (i.e. not a redistributable package).
+[source,go]
+----
+ var __ = gremlingo.T__
+ var gt = gremlingo.P.Gt
+ var desc = gremlingo.Desc
+
+ results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+----
+
+==== List of useful aliases
+[source,go]
+----
+ // common
+ var __ = gremlingo.T__
+ var TextP = gremlingo.TextP
+
+ // predicates
+ var between = gremlingo.P.Between
+ var eq = gremlingo.P.Eq
+ var gt = gremlingo.P.Gt
+ var gte = gremlingo.P.Gte
+ var inside = gremlingo.P.Inside
+ var lt = gremlingo.P.Lt
+ var lte = gremlingo.P.Lte
+ var neq = gremlingo.P.Neq
+ var not = gremlingo.P.Not
+ var outside = gremlingo.P.Outside
+ var test = gremlingo.P.Test
+ var within = gremlingo.P.Within
+ var without = gremlingo.P.Without
+ var and = gremlingo.P.And
+ var or = gremlingo.P.Or
+
+ // sorting
+ var shuffle = gremlingo.Shuffle
+ var asc = gremlingo.Asc
+ var desc = gremlingo.Desc
+----
+
[[gremlin-go-limitations]]
=== Limitations
diff --git a/gremlin-go/README.md b/gremlin-go/README.md
index 5694cd09fd..e9f1bed9c8 100644
--- a/gremlin-go/README.md
+++ b/gremlin-go/README.md
@@ -136,6 +136,45 @@ Note: The exact import name as well as the module prefix for `NewDriverRemoteCon
})
```
+## Aliases
+To make the code more readable and close to the Gremlin query language), you can use aliases. These aliases can be named with capital letters to be consistent with non-aliased steps but will result in exported variables which could be problematic if not being used in a top-level program (i.e. not a redistributable package).
+```go
+ var __ = gremlingo.T__
+ var gt = gremlingo.P.Gt
+ var desc = gremlingo.Desc
+
+ results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+```
+
+### List of useful aliases
+```go
+ // common
+ var __ = gremlingo.T__
+ var TextP = gremlingo.TextP
+
+ // predicates
+ var between = gremlingo.P.Between
+ var eq = gremlingo.P.Eq
+ var gt = gremlingo.P.Gt
+ var gte = gremlingo.P.Gte
+ var inside = gremlingo.P.Inside
+ var lt = gremlingo.P.Lt
+ var lte = gremlingo.P.Lte
+ var neq = gremlingo.P.Neq
+ var not = gremlingo.P.Not
+ var outside = gremlingo.P.Outside
+ var test = gremlingo.P.Test
+ var within = gremlingo.P.Within
+ var without = gremlingo.P.Without
+ var and = gremlingo.P.And
+ var or = gremlingo.P.Or
+
+ // sorting
+ var shuffle = gremlingo.Shuffle
+ var asc = gremlingo.Asc
+ var desc = gremlingo.Desc
+```
+
## Troubleshooting
### Can't establish connection and get any result
@@ -313,6 +352,11 @@ if err != nil {
results, err := g.V().HasLabel("person").Has("age", gremlingo.T__.Is(gremlingo.P.Gt(30))).Order().By("age", gremlingo.Desc).ToList()
```
+Or with aliases
+```go
+ results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+```
+
*List of all exports can be found at [pkg.go.dev](https://pkg.go.dev/github.com/apache/tinkerpop/gremlin-go/v3/driver)*
### Supported Data Types
diff --git a/gremlin-go/example/example.go b/gremlin-go/example/example.go
index 365565e566..561cde944a 100644
--- a/gremlin-go/example/example.go
+++ b/gremlin-go/example/example.go
@@ -24,6 +24,11 @@ import (
"github.com/apache/tinkerpop/gremlin-go/v3/driver"
)
+// syntactic sugar
+var __ = gremlingo.T__
+var gt = gremlingo.P.Gt
+var desc = gremlingo.Desc
+
func main() {
// Creating the connection to the server.
driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("ws://localhost:8182/gremlin",
@@ -41,7 +46,7 @@ func main() {
g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)
// Perform traversal
- result, err := g.V().HasLabel("person").Order().By("age").Values("name").ToList()
+ result, err := g.V().HasLabel("person").Has("age", __.Is(gt(28))).Order().By("age", desc).Values("name").ToList()
if err != nil {
fmt.Println(err)
return