Documentation
¶
Index ¶
- func Close()
- func EdgeTypes() []string
- func HasNode(id primitive.TypedID) bool
- func NodeTypes() []string
- func RangeEdgeTypes(edgeType primitive.Type, fn func(e *primitive.Edge) bool)
- func RangeEdges(fn func(e *primitive.Edge) bool)
- func RangeNodeTypes(typ primitive.Type, fn func(n *Node) bool)
- func RangeNodes(fn func(n *Node) bool)
- type Node
- func (n *Node) Connect(node *Node, relationship string) error
- func (n *Node) EdgesFrom(fn func(e *primitive.Edge) bool)
- func (n *Node) EdgesTo(fn func(e *primitive.Edge) bool)
- func (n *Node) JSON() ([]byte, error)
- func (n *Node) Patch(data map[string]interface{})
- func (n *Node) Range(fn func(key string, value interface{}) bool)
- func (n *Node) Remove()
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RangeEdges ¶
func RangeNodes ¶
Types ¶
type Node ¶
func NewNode ¶
Example ¶
package main
import (
"fmt"
"github.com/autom8ter/dagger"
"github.com/autom8ter/dagger/primitive"
"log"
"time"
)
func main() {
coleman = dagger.NewNode("user", fmt.Sprintf("cword_%v", time.Now().UnixNano()), map[string]interface{}{
"name": "coleman",
})
tyler = dagger.NewNode("user", fmt.Sprintf("twash_%v", time.Now().UnixNano()), map[string]interface{}{
"name": "tyler",
})
sarah = dagger.NewNode("user", fmt.Sprintf("swash_%v", time.Now().UnixNano()), map[string]interface{}{
"name": "sarah",
})
lacee = dagger.NewNode("user", fmt.Sprintf("ljans_%v", time.Now().UnixNano()), map[string]interface{}{
"name": "lacee",
})
// random id will be generated if one isn't provided
charlie = dagger.NewNode("dog", "", map[string]interface{}{
"name": "charlie",
"weight": 25,
})
if err := coleman.Connect(tyler, "friend"); err != nil {
exitErr(err)
}
if err := tyler.Connect(coleman, "friend"); err != nil {
exitErr(err)
}
if err := sarah.Connect(lacee, "friend"); err != nil {
exitErr(err)
}
if err := lacee.Connect(sarah, "friend"); err != nil {
exitErr(err)
}
if err := coleman.Connect(lacee, "fiance"); err != nil {
exitErr(err)
}
if err := lacee.Connect(coleman, "fiance"); err != nil {
exitErr(err)
}
if err := tyler.Connect(lacee, "wife"); err != nil {
exitErr(err)
}
if err := sarah.Connect(tyler, "wife"); err != nil {
exitErr(err)
}
if err := coleman.Connect(charlie, "pet"); err != nil {
exitErr(err)
}
if err := lacee.Connect(charlie, "pet"); err != nil {
exitErr(err)
}
if err := charlie.Connect(lacee, "owner"); err != nil {
exitErr(err)
}
if err := charlie.Connect(coleman, "owner"); err != nil {
exitErr(err)
}
charlie.Patch(map[string]interface{}{
"weight": 19,
})
// check to make sure edge is patched
coleman.EdgesFrom(func(e *primitive.Edge) bool {
if e.Type() == "pet" && e.GetString("name") == "charlie" {
if e.To.GetInt("weight") != 19 {
exit("failed to patch charlie's weight")
}
}
return true
})
// remove from graph
charlie.Remove()
// no longer in graph
if dagger.HasNode(charlie) {
exit("failed to delete node - (charlie)")
}
// check to make sure edge no longer exists(cascade)
coleman.EdgesFrom(func(e *primitive.Edge) bool {
if e.Type() == "pet" && e.GetString("name") == "charlie" {
exit("failed to delete node - (charlie)")
}
return true
})
// check to make sure edge no longer exists(cascade)
lacee.EdgesFrom(func(e *primitive.Edge) bool {
if e.Type() == "pet" && e.GetString("name") == "charlie" {
exit("failed to delete node - (charlie)")
}
return true
})
}
func exit(msg string) {
log.Fatal(msg)
}
func exitErr(err error) {
log.Fatal(err)
}
Output:
Click to show internal directories.
Click to hide internal directories.