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)
Output:
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 )