Skip to content

Instantly share code, notes, and snippets.

@mnd999
Last active June 8, 2020 14:11
Show Gist options
  • Save mnd999/3410b9a804bdd8272ef99f9edfcca196 to your computer and use it in GitHub Desktop.
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
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