Giraffe
A simple node & browser graph database
Install
npm install --save giraffe
Use
; const db = ; ;
Methods
-
new Giraffe(data, callback)
data
:Object
Optional- Should be in the shape of
{ nodes: [], edges: [] }
- Labels are created dynamically based on data passed in
Nodes
andEdges
are checked for their correct shape.
- Should be in the shape of
callback
:Function
Optional- Can be passed first if no data is supplied
- Callback is called just before returning on each Database Method
- Create the DB instance
-
.create(label, data)
label
:String
||Array
Optionaldata
:Object
label
is type checked and coerced into a Array within theNode
constructor
-
.remove(nodes)
nodes
:Array
Array of Nodes to be removed from graph- this is automatically converted to an Array if a single node is passed in.
-
.edge([ from ], [ to ], label, properties)
from
Array
Array of Nodes where edge originatesto
:Array
Array of Nodes where edge goeslabel
:String
Optionalproperties
:Object
Optional
-
.query(label, properties)
label
:String
Optionalproperties
:Object
Optional- you can search for an edge with the property key
_edges
- you can search for an edge with the property key
- An empty query returns all nodes
- Queries return only their immediate relationships
-
.update([ nodes ], [ labels ], data)
nodes
:Array
(or single) node to be updatedlabels
:Array
(or single) label to be added to Nodes.data
:Object
Data set to be merged with previous data, any duplicate keys will be overwritten.- edge labels cannot be updated, an error will be thrown
Internal Structure
Database
/** * All relationships with additional properties */ edges: /** * All nodes with properties */ nodes: /** * Dynamic key:value store for tracking known node and edge labels */ labels: nodes: label: /* Array of Node ids */ edges: label: /* Array of Edge ids */
Callback
The callback
passed to your DB instance is called before the return statement of every method. That is to say db.create
returns the created Node
, but just before that return you callback
is fired.
The calls are all identical it is called with the Type
of request and the modified, added, or removed data.
method | type | data |
---|---|---|
Create | 'create' | Node |
Remove | 'remove' | Array[Node ] |
Edge | 'edge' | Array[Edge ] |
Query | 'query' | Array[Query Result ] |
Update | 'update' | Array[Updated Nodes / Edges ] |
Node
identity: <UUID /> properties: Object labels: Array edges: Array
Node information
properties
is the object passed into thedb.create
method.edges
is an array of Edge identity's before a query, after a query it is an array of references to theNode
's they represent
Edge
identity: <UUID /> from: <Node Identity /> || <Node /> through: <Node Identity /> || <Node /> label: String properties: Object
Edge information
properties
is the object passed into thedb.edge
method.from
andthrough
are stored in the DB asfrom.identity
andthrough.identity
.- When
db.query
returnsfrom
andthrough
are references to theNode
's they represent
Coming Features
Checkout out the TODO Project on Github.
- Complex Queries.
- Investigate Typescript.