From 79268e8cdfb7197ed9c50e5f3b277472ad4a1690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandbox=20=F0=9F=A4=96?= Date: Mon, 11 Dec 2023 09:19:10 +0000 Subject: [PATCH] Triggered by direct commit. Origin: https://github.com/neo4j-contrib/sandbox-code-updater/commit/9452d62941fd3de583c79d51df836ec60d1783ac --- code/csharp/Example.cs | 2 +- code/go/example.go | 61 ++++++++++++++++---------------------- code/java/Example.java | 2 +- code/javascript/example.js | 4 +-- code/python/example.py | 24 +++++++-------- 5 files changed, 41 insertions(+), 52 deletions(-) diff --git a/code/csharp/Example.cs b/code/csharp/Example.cs index a8fc9cc..384b570 100644 --- a/code/csharp/Example.cs +++ b/code/csharp/Example.cs @@ -13,7 +13,7 @@ namespace dotnet { class Example { static async Task Main() { - var driver = GraphDatabase.Driver("bolt://:", + var driver = GraphDatabase.Driver("neo4j://:", AuthTokens.Basic("", "")); var cypherQuery = diff --git a/code/go/example.go b/code/go/example.go index ac5b541..82bdbe8 100644 --- a/code/go/example.go +++ b/code/go/example.go @@ -3,14 +3,14 @@ package main import ( + "context" "fmt" - "github.com/neo4j/neo4j-go-driver/v4/neo4j" - "io" + "github.com/neo4j/neo4j-go-driver/v5/neo4j" "reflect" ) func main() { - results, err := runQuery("bolt://:", "neo4j", "", "") + results, err := runQuery("neo4j://:", "neo4j", "", "") if err != nil { panic(err) } @@ -19,47 +19,38 @@ func main() { } } -func runQuery(uri, database, username, password string) (result []string, err error) { - driver, err := neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, "")) +func runQuery(uri, database, username, password string) (_ []string, err error) { + ctx := context.Background() + driver, err := neo4j.NewDriverWithContext(uri, neo4j.BasicAuth(username, password, "")) if err != nil { return nil, err } - defer func() {err = handleClose(driver, err)}() - session := driver.NewSession(neo4j.SessionConfig{AccessMode: neo4j.AccessModeRead, DatabaseName: database}) - defer func() {err = handleClose(session, err)}() - results, err := session.ReadTransaction(func(transaction neo4j.Transaction) (interface{}, error) { - result, err := transaction.Run( - ` - MATCH (p1:PointOfInterest {type:$type}), (p2:PointOfInterest) - WHERE p1<>p2 AND distance(p1.location,p2.location) < 200 - RETURN p2.name as name - `, map[string]interface{}{ - "type": "clock", - }) + defer func() { err = handleClose(ctx, driver, err) }() + query := " MATCH (p1:PointOfInterest {type:$type}), (p2:PointOfInterest) + WHERE p1<>p2 AND distance(p1.location,p2.location) < 200 + RETURN p2.name as name + params := map[string]any{"type": "clock"} + result, err := neo4j.ExecuteQuery(ctx, driver, query, params, + neo4j.EagerResultTransformer, + neo4j.ExecuteQueryWithDatabase(database), + neo4j.ExecuteQueryWithReadersRouting()) + if err != nil { + return nil, err + } + names := make([]string, len(result.Records)) + for i, record := range result.Records { + // this assumes all actors have names, hence ignoring the 2nd returned value + name, _, err := neo4j.GetRecordValue[string](record, "name") if err != nil { return nil, err } - var arr []string - for result.Next() { - value, found := result.Record().Get("name") - if found { - arr = append(arr, value.(string)) - } - } - if err = result.Err(); err != nil { - return nil, err - } - return arr, nil - }) - if err != nil { - return nil, err + names[i] = name } - result = results.([]string) - return result, err + return names, nil } -func handleClose(closer io.Closer, previousError error) error { - err := closer.Close() +func handleClose(ctx context.Context, closer interface{ Close(context.Context) error }, previousError error) error { + err := closer.Close(ctx) if err == nil { return previousError } diff --git a/code/java/Example.java b/code/java/Example.java index 1cf84b2..d085868 100644 --- a/code/java/Example.java +++ b/code/java/Example.java @@ -11,7 +11,7 @@ public class Example { public static void main(String...args) { - Driver driver = GraphDatabase.driver("bolt://:", + Driver driver = GraphDatabase.driver("neo4j://:", AuthTokens.basic("","")); try (Session session = driver.session(SessionConfig.forDatabase("neo4j"))) { diff --git a/code/javascript/example.js b/code/javascript/example.js index bc0b81a..512cf40 100644 --- a/code/javascript/example.js +++ b/code/javascript/example.js @@ -1,9 +1,9 @@ // npm install --save neo4j-driver // node example.js const neo4j = require('neo4j-driver'); -const driver = neo4j.driver('bolt://:', +const driver = neo4j.driver('neo4j://:', neo4j.auth.basic('', ''), - {/* encrypted: 'ENCRYPTION_OFF' */}); + {}); const query = ` diff --git a/code/python/example.py b/code/python/example.py index 3e28a76..16f9681 100644 --- a/code/python/example.py +++ b/code/python/example.py @@ -1,23 +1,21 @@ -# pip3 install neo4j-driver +# pip3 install neo4j # python3 example.py from neo4j import GraphDatabase, basic_auth -driver = GraphDatabase.driver( - "bolt://:", - auth=basic_auth("", "")) - cypher_query = ''' MATCH (p1:PointOfInterest {type:$type}), (p2:PointOfInterest) WHERE p1<>p2 AND distance(p1.location,p2.location) < 200 RETURN p2.name as name ''' -with driver.session(database="neo4j") as session: - results = session.read_transaction( - lambda tx: tx.run(cypher_query, - type="clock").data()) - for record in results: - print(record['name']) - -driver.close() +with GraphDatabase.driver( + "neo4j://:", + auth=("", "") +) as driver: + result = driver.execute_query( + cypher_query, + type="clock", + database_="neo4j") + for record in result.records: + print(record['name'])