Last active
June 8, 2020 14:11
-
-
Save mnd999/3410b9a804bdd8272ef99f9edfcca196 to your computer and use it in GitHub Desktop.
Example: Multiple databases and admin commands using the Neo4j 1.8 driver for go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"log" | |
"github.com/neo4j/neo4j-go-driver/neo4j" | |
) | |
func main() { | |
err := doDb() | |
if err != nil { | |
log.Fatal(err) | |
} | |
} | |
func doDb() error { | |
configForNeo4j40 := func(conf *neo4j.Config) { conf.Encrypted = false } | |
driver, err := neo4j.NewDriver("bolt://localhost:7687", neo4j.BasicAuth("mark", "password", ""), configForNeo4j40) | |
if err != nil { | |
return err | |
} | |
// handle driver lifetime based on your application lifetime requirements | |
// driver's lifetime is usually bound by the application lifetime, which usually implies one driver instance per application | |
defer driver.Close() | |
systemSessionConfig := neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite} | |
systemSessionConfig.DatabaseName = "system" | |
systemSession, err := driver.NewSession(systemSessionConfig) | |
if err != nil { | |
return err | |
} | |
defer systemSession.Close() | |
result, err := systemSession.Run("CREATE DATABASE mushroom IF NOT EXISTS", map[string]interface{}{}) | |
if err != nil { | |
return err | |
} | |
result, err = systemSession.Run("DENY CREATE ON GRAPH neo4j NODES Badger TO PUBLIC", map[string]interface{}{}) | |
if err != nil { | |
return err | |
} | |
result, err = systemSession.Run("SHOW ALL PRIVILEGES WHERE role = 'PUBLIC' OR role = 'admin'", map[string]interface{}{}) | |
if err != nil { | |
return err | |
} | |
println("Priviliges for 'mark':") | |
println("======================") | |
for result.Next() { | |
for _, key := range result.Record().Keys() { | |
col, _ := result.Record().Get(key) | |
fmt.Printf("%s,", col.(string)) | |
} | |
fmt.Print("\n") | |
} | |
neo4jSessionConfig := neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite} | |
neo4jSessionConfig.DatabaseName = "neo4j" | |
neo4jSession, err := driver.NewSession(neo4jSessionConfig) | |
if err != nil { | |
return err | |
} | |
defer neo4jSession.Close() | |
println("\nTrying to CREATE (b:Badger) in neo4j db") | |
result, err = neo4jSession.Run("CREATE (b:Badger)", map[string]interface{}{}) | |
if err != nil { | |
return err | |
} | |
log.Println(result.Err()) | |
mushroomSessionConfig := neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite} | |
mushroomSessionConfig.DatabaseName = "mushroom" | |
mushroomSession, err := driver.NewSession(mushroomSessionConfig) | |
if err != nil { | |
return err | |
} | |
defer mushroomSession.Close() | |
println("\nTrying to CREATE (b:Badger) in mushroom db") | |
result, err = mushroomSession.Run("CREATE (b:Badger)", map[string]interface{}{}) | |
if err != nil { | |
return err | |
} | |
log.Println(result.Err()) | |
return result.Err() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment