Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

aranGoDriver Build Status

This project is a golang-driver for ArangoDB writen in go.
There is also an embedded-in-memory-Database to run all your tests.

Currently implemented:

If you miss something, please contact me!

Getting started

All you need is a running Arango-DB and a go-environment.

Install aranGoDriver: go get github.com/TobiEiss/aranGoDriver

Write your first aranGoDriver-Programm:

func main() {
    var session aranGoDriver.Session
    
    // Initialize a arango-Session with the address to your arangoDB.
    //
    // If you write a test use:
    // session = aranGoDriver.NewTestSession()
    //
    session = aranGoDriver.NewAranGoDriverSession("http://localhost:8529")

    // Connect to your arango-database:
	session.Connect("usnername", "secretPassword")

    // Concrats, you are connected!
    // Let's print out all your databases
    list, err := session.ListDBs()
    if err != nil {
        log.Fatal("there was a problem: ", err)
    }
    log.Println(list)

    // Create a new database
    err = session.CreateDB("myNewDatabase")
    // TODO: handle err

    // Create a new collection
    err = session.CreateCollection("myNewDatabase", "myNewCollection")
    // TODO: handle err

    // Create Document
    newDocument := make(map[string]interface{})
    newDocument["foo"] = "bar"
    arangoID, err = session.CreateDocument("myNewDatabase", "myNewCollection", newDocument)
}

Test

Test against a fake-in-memory-database:

go test

Test with a real database

go test -dbhost http://localhost:8529 -dbusername root -dbpassword password123

Usage

Connect to your ArangoDB

You need a new Session to your database with the hostname as parameter. Then connect with an existing username and a password.

session := aranGoDriver.NewAranGoDriverSession("http://localhost:8529")
session.Connect("username", "password")

Version

version, err := session.Version()

User

To use this methods you need a session as root user.

// create a new user
err := session.CreateUser("username", "password")

// delete an existing user
err := session.DropUser("username")

// grant permissions for a database
err := session.GrantDB("database", "username", "rw")
// Instead of "rw" you can also use "ro" or "none"

// grant permissions for collections
err := session.GrantCollection("database", "collection", "username", "rw") 
// Instead of "rw" you can also use "ro" or "none"
// and instead of a collection name, you can use "*" for all collections

Database

// list databases
list := session.ListDBs()
fmt.Println(list) // will print ([]string): [ _system test testDB]

// create databases
err := session.CreateDB("myNewDatabase")

// drop databases
err = session.DropDB("myNewDatabase")

Collection

// create a collection in a database
err = CreateCollection("myNewDatabase", "myNewCollection")

// drop collection from database
err = DropCollection("myNewDatabase", "myNewCollection")

// truncate database
err = TruncateCollection("myNewDatabase", "myNewCollection")

EdgeCollection:

// create a collection in a database
err = CreateEdgeCollection("myNewDatabase", "myNewEdgeCollection")

Document

// create document
testDoc["foo"] = "bar"
arangoID, err := session.CreateDocument("myNewDatabase", "myNewCollection", testDoc)

// get by id
resultAsMap, err := session.GetCollectionByID("myNewDatabase", idOfDocument)

// update Document
testDoc["bar"] = "foo"
err = session.UpdateDocument("myNewDatabase", arangoID.ID, testDoc)

EdgeDocument

arangoID, err := session.CreateDocument("myNewDatabase", "myNewCollection", testDoc)

Graphs

To create a graph, you need to define the edges and nodes for the graph. This can be done with the EdgeDefinition model.

edgeDefinition := models.EdgeDefinition{
    Collection: "myEdgeCollection",
    From:       []string{"myCollection1"},
    To:         []string{"myCollection2"}}
edgeDefinitions := []models.EdgeDefinition{edgeDefinition}

err := session.CreateGraph("myDatabase", "myGraph", edgeDefinitions)

If you want to get rid of an existing graph, you can use the DropGraph method.

err := session.DropGraph("myDatabase", "myGraph")

For an overview of your existing graphs, you can use ListGraphs.

str, b, err := session.ListGraphs("myDatabase")

Migrations

In some cases you need 'migrations'. For example, you need default-user in your database in every environment. For this case, you can use migrations. The aranGoDriver write his own memo in a migrations-Collection in the standard -system-Database of arango, and execute the migration only one time. AranGoDriver will identificate the migration by name. Take a look to the following example:

// check migrations
mig1 := aranGoDriver.Migration{
    Name: "mig1", // name of migration to identificate
    Handle: func(embeddedSession aranGoDriver.Session) {
        testMap := make(map[string]interface{})
        testMap["foo"] = "foo"
        // you can do everything with the database
        embeddedSession.CreateDocument("myDatabase", "myCollection", testMap)
    },
}
// excute migration
// Run This line before you 'main-loop' of your program
session.Migrate(mig1)

aql

// create query
query := "FOR element in testColl FILTER element.foo == 'bar' RETURN element"
response, err := session.AqlQuery("myNewDatabase", query, true, 1)

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.