Documentation
¶
Index ¶
- Constants
- func BuildParamsHeader(params map[string]interface{}) string
- func RandomString(n int) string
- func ToString(i interface{}) string
- type Edge
- type Graph
- func (g *Graph) AddEdge(e *Edge) error
- func (g *Graph) AddNode(n *Node)
- func (g *Graph) CallProcedure(procedure string, yield []string, args ...interface{}) (*QueryResult, error)
- func (g *Graph) Commit() (*QueryResult, error)
- func (g *Graph) Delete() error
- func (g *Graph) ExecutionPlan(q string) (string, error)
- func (g *Graph) Flush() (*QueryResult, error)
- func (g *Graph) Labels() []string
- func (g *Graph) Merge(p string) (*QueryResult, error)
- func (g *Graph) ParameterizedQuery(q string, params map[string]interface{}) (*QueryResult, error)
- func (g *Graph) ParameterizedQueryWithOptions(q string, params map[string]interface{}, options *QueryOptions) (*QueryResult, error)
- func (g *Graph) PropertyKeys() []string
- func (g *Graph) Query(q string) (*QueryResult, error)
- func (g *Graph) QueryWithOptions(q string, options *QueryOptions) (*QueryResult, error)
- func (g *Graph) ROQuery(q string) (*QueryResult, error)
- func (g *Graph) ROQueryWithOptions(q string, options *QueryOptions) (*QueryResult, error)
- func (g *Graph) RelationshipTypes() []string
- type Node
- type Path
- type QueryOptions
- type QueryResult
- func (qr *QueryResult) CachedExecution() int
- func (qr *QueryResult) Empty() bool
- func (qr *QueryResult) IndicesCreated() int
- func (qr *QueryResult) IndicesDeleted() int
- func (qr *QueryResult) InternalExecutionTime() float64
- func (qr *QueryResult) LabelsAdded() int
- func (qr *QueryResult) Next() bool
- func (qr *QueryResult) NodesCreated() int
- func (qr *QueryResult) NodesDeleted() int
- func (qr *QueryResult) PrettyPrint()
- func (qr *QueryResult) PropertiesSet() int
- func (qr *QueryResult) Record() *Record
- func (qr *QueryResult) RelationshipsCreated() int
- func (qr *QueryResult) RelationshipsDeleted() int
- type QueryResultHeader
- type Record
- type ResultSetColumnTypes
- type ResultSetScalarTypes
Examples ¶
Constants ¶
const ( LABELS_ADDED string = "Labels added" NODES_CREATED string = "Nodes created" NODES_DELETED string = "Nodes deleted" RELATIONSHIPS_DELETED string = "Relationships deleted" PROPERTIES_SET string = "Properties set" RELATIONSHIPS_CREATED string = "Relationships created" INDICES_CREATED string = "Indices created" INDICES_DELETED string = "Indices deleted" INTERNAL_EXECUTION_TIME string = "Query internal execution time" CACHED_EXECUTION string = "Cached execution" )
Variables ¶
This section is empty.
Functions ¶
func BuildParamsHeader ¶
Types ¶
type Edge ¶
type Edge struct {
ID uint64
Relation string
Source *Node
Destination *Node
Properties map[string]interface{}
// contains filtered or unexported fields
}
Edge represents an edge connecting two nodes in the graph.
func EdgeNew ¶
func EdgeNew(relation string, srcNode *Node, destNode *Node, properties map[string]interface{}) *Edge
EdgeNew create a new Edge
func (Edge) DestNodeID ¶
DestNodeID returns edge destination node ID
func (*Edge) GetProperty ¶
GetProperty retrieves property from edge
func (*Edge) SetProperty ¶
SetProperty assign a new property to edge
func (Edge) SourceNodeID ¶
SourceNodeID returns edge source node ID
type Graph ¶
type Graph struct {
Id string
Nodes map[string]*Node
Edges []*Edge
Conn redis.Conn
// contains filtered or unexported fields
}
Graph represents a graph, which is a collection of nodes and edges.
func GraphNew ¶
New creates a new graph.
Example ¶
conn, _ := redis.Dial("tcp", "localhost:6380")
graph := redisgraph.GraphNew("social", conn)
q := "CREATE (w:WorkPlace {name:'RedisLabs'}) RETURN w"
res, _ := graph.Query(q)
res.Next()
r := res.Record()
w := r.GetByIndex(0).(*redisgraph.Node)
fmt.Println(w.Label)
Output: WorkPlace
Example (Pool) ¶
host := "localhost:6380"
pool := &redis.Pool{Dial: func() (redis.Conn, error) {
return redis.Dial("tcp", host)
}}
graph := redisgraph.GraphNew("social", pool.Get())
q := "CREATE (w:WorkPlace {name:'RedisLabs'}) RETURN w"
res, _ := graph.Query(q)
res.Next()
r := res.Record()
w := r.GetByIndex(0).(*redisgraph.Node)
fmt.Println(w.Label)
Output: WorkPlace
Example (Tls) ¶
// Consider the following helper methods that provide us with the connection details (host and password)
// and the paths for:
// tls_cert - A a X.509 certificate to use for authenticating the server to connected clients, masters or cluster peers. The file should be PEM formatted
// tls_key - A a X.509 private key to use for authenticating the server to connected clients, masters or cluster peers. The file should be PEM formatted
// tls_cacert - A PEM encoded CA's certificate file
host, password := getConnectionDetails()
tlsready, tls_cert, tls_key, tls_cacert := getTLSdetails()
// Skip if we dont have all files to properly connect
if tlsready == false {
return
}
// Load client cert
cert, err := tls.LoadX509KeyPair(tls_cert, tls_key)
if err != nil {
log.Fatal(err)
}
// Load CA cert
caCert, err := ioutil.ReadFile(tls_cacert)
if err != nil {
log.Fatal(err)
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
clientTLSConfig := &tls.Config{
Certificates: []tls.Certificate{cert},
RootCAs: caCertPool,
}
// InsecureSkipVerify controls whether a client verifies the
// server's certificate chain and host name.
// If InsecureSkipVerify is true, TLS accepts any certificate
// presented by the server and any host name in that certificate.
// In this mode, TLS is susceptible to man-in-the-middle attacks.
// This should be used only for testing.
clientTLSConfig.InsecureSkipVerify = true
pool := &redis.Pool{Dial: func() (redis.Conn, error) {
return redis.Dial("tcp", host,
redis.DialPassword(password),
redis.DialTLSConfig(clientTLSConfig),
redis.DialUseTLS(true),
redis.DialTLSSkipVerify(true),
)
}}
graph := redisgraph.GraphNew("social", pool.Get())
q := "CREATE (w:WorkPlace {name:'RedisLabs'}) RETURN w"
res, _ := graph.Query(q)
res.Next()
r := res.Record()
w := r.GetByIndex(0).(*redisgraph.Node)
fmt.Println(w.Label)
func (*Graph) CallProcedure ¶
func (g *Graph) CallProcedure(procedure string, yield []string, args ...interface{}) (*QueryResult, error)
CallProcedure invokes procedure.
func (*Graph) Commit ¶
func (g *Graph) Commit() (*QueryResult, error)
Commit creates the entire graph, but will re-add nodes if called again.
func (*Graph) ExecutionPlan ¶
ExecutionPlan gets the execution plan for given query.
func (*Graph) Flush ¶
func (g *Graph) Flush() (*QueryResult, error)
Flush will create the graph and clear it
func (*Graph) ParameterizedQuery ¶
func (g *Graph) ParameterizedQuery(q string, params map[string]interface{}) (*QueryResult, error)
func (*Graph) ParameterizedQueryWithOptions ¶
func (g *Graph) ParameterizedQueryWithOptions(q string, params map[string]interface{}, options *QueryOptions) (*QueryResult, error)
ParameterizedQueryWithOptions issues a parameterized query with the given timeout
func (*Graph) PropertyKeys ¶
PropertyKeys retrieves all properties names.
func (*Graph) Query ¶
func (g *Graph) Query(q string) (*QueryResult, error)
Query executes a query against the graph.
func (*Graph) QueryWithOptions ¶
func (g *Graph) QueryWithOptions(q string, options *QueryOptions) (*QueryResult, error)
QueryWithOptions issues a query with the given timeout
func (*Graph) ROQuery ¶
func (g *Graph) ROQuery(q string) (*QueryResult, error)
ROQuery executes a read only query against the graph.
func (*Graph) ROQueryWithOptions ¶
func (g *Graph) ROQueryWithOptions(q string, options *QueryOptions) (*QueryResult, error)
ROQueryWithOptions issues a read-only query with the given timeout
func (*Graph) RelationshipTypes ¶
RelationshipTypes retrieves all edge relationship types.
type Node ¶
type Node struct {
ID uint64
Labels []string
Alias string
Properties map[string]interface{}
// contains filtered or unexported fields
}
Node represents a node within a graph
func (Node) GetProperty ¶
GetProperty retrieves property from node
func (*Node) SetProperty ¶
SetProperty asssign a new property to node
type Path ¶
func (Path) NodesCount ¶
type QueryOptions ¶
type QueryOptions struct {
// contains filtered or unexported fields
}
QueryOptions are a set of additional arguments to be emitted with a query.
func NewQueryOptions ¶
func NewQueryOptions() *QueryOptions
NewQueryOptions instantiates a new QueryOptions struct.
func (*QueryOptions) GetTimeout ¶
func (options *QueryOptions) GetTimeout() int
GetTimeout retrieves the timeout of the QueryOptions struct
func (*QueryOptions) SetTimeout ¶
func (options *QueryOptions) SetTimeout(timeout int) *QueryOptions
SetTimeout sets the timeout member of the QueryOptions struct
type QueryResult ¶
type QueryResult struct {
// contains filtered or unexported fields
}
QueryResult represents the results of a query.
func QueryResultNew ¶
func QueryResultNew(g *Graph, response interface{}) (*QueryResult, error)
func (*QueryResult) CachedExecution ¶
func (qr *QueryResult) CachedExecution() int
func (*QueryResult) Empty ¶
func (qr *QueryResult) Empty() bool
func (*QueryResult) IndicesCreated ¶
func (qr *QueryResult) IndicesCreated() int
func (*QueryResult) IndicesDeleted ¶
func (qr *QueryResult) IndicesDeleted() int
func (*QueryResult) InternalExecutionTime ¶
func (qr *QueryResult) InternalExecutionTime() float64
Returns the query internal execution time in milliseconds
func (*QueryResult) LabelsAdded ¶
func (qr *QueryResult) LabelsAdded() int
func (*QueryResult) Next ¶
func (qr *QueryResult) Next() bool
Next returns true only if there is a record to be processed.
func (*QueryResult) NodesCreated ¶
func (qr *QueryResult) NodesCreated() int
func (*QueryResult) NodesDeleted ¶
func (qr *QueryResult) NodesDeleted() int
func (*QueryResult) PrettyPrint ¶
func (qr *QueryResult) PrettyPrint()
PrettyPrint prints the QueryResult to stdout, pretty-like.
func (*QueryResult) PropertiesSet ¶
func (qr *QueryResult) PropertiesSet() int
func (*QueryResult) Record ¶
func (qr *QueryResult) Record() *Record
Record returns the current record.
func (*QueryResult) RelationshipsCreated ¶
func (qr *QueryResult) RelationshipsCreated() int
func (*QueryResult) RelationshipsDeleted ¶
func (qr *QueryResult) RelationshipsDeleted() int
type QueryResultHeader ¶
type QueryResultHeader struct {
// contains filtered or unexported fields
}
type Record ¶
type Record struct {
// contains filtered or unexported fields
}
func (*Record) GetByIndex ¶
type ResultSetColumnTypes ¶
type ResultSetColumnTypes int
const ( COLUMN_UNKNOWN ResultSetColumnTypes = iota COLUMN_SCALAR COLUMN_NODE COLUMN_RELATION )
type ResultSetScalarTypes ¶
type ResultSetScalarTypes int
const ( VALUE_UNKNOWN ResultSetScalarTypes = iota VALUE_NULL VALUE_STRING VALUE_INTEGER VALUE_BOOLEAN VALUE_DOUBLE VALUE_ARRAY VALUE_EDGE VALUE_NODE VALUE_PATH VALUE_MAP VALUE_POINT )