Skip to content

jinger89/grafite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Grafite

Graph-like database interface using Javascript, MySQL, and Mongo.

Basic Goals

  1. Create and manipulate objects
    • Create
    • Update
    • Delete
  2. Relate objects to each other
    • Have multiple relationships
    • Remove object relationships
  3. Query for objects
    • By object property
    • By relationship
  4. Traverse from object to object
    • By object property
    • By relationship

Library Objects

grafite

The main interface for the library. Read the rest of this documentation for more information.

grafiteQuery

Returned by functions that query and traverse nodes:

Has two available methods:

nodeObject

Results from functions that create, manipulate, and find nodes:

Available methods:

queryObject

An array with 3 elements used to query and traverse for nodes.

[
    upstream,
    query object,
    downstream
]
  • upstream a string or an array of strings that define the upstream relationships to look for
  • query object and object in the style of MongoDB find object
  • downstream a string or an array of strings that define the downstream relationships to look for

Use null call be used for any 3 of these elements, indicating not to query on that field.

orderObject

A plain object with a key-value pairs. Where the key is the field to sort on, and the value is either 1 for ascending order (defualt), or 0 or -1 for descending order.

Manipulate Nodes

grafite.create(data, callback);

Create a node.

  • data an object
  • callback(error, nodeObject)

grafite.get(node, callback);

Get a node.

  • node nodeID or nodeObject
  • callback(error, nodeObject)

grafite.update(node, data, callback);

Update a node's data.

  • node nodeID or nodeObject
  • data an object, parameters with undefined values are removed
  • callback(error, nodeObject)

grafite.delete(node, callback);

Delete a node and node's relationships.

  • node nodeID or nodeObject
  • callback(error)

Node Relationships

grafite.relate(upstreamNode, relationship, downstreamNode, callback);

Relate upstream node to downstream node with one or more relationships.

  • upstreamNode nodeID or nodeObject
  • relationship single relationship or an array an relationships
  • downstreamNode nodeID or nodeObject
  • callback(error)

grafite.unrelate(upstreamNode, relationship, downstreamNode, callback);

Remove one or more relationships from upstream node to downstream node.

  • upstreamNode nodeID or nodeObject
  • relationship single relationship or an array of relationships
  • downstreamNode nodeID or nodeObject
  • callback(error)

grafite.unrelate(upstreamNode, downstreamNode, callback);

Remove all relationships from upstream node to downstream node.

  • upstreamNode nodeID or nodeObject
  • downstreamNode nodeID or nodeObject
  • callback(error)

grafite.sever(node, node, callback);

Remove all relationships between both nodes.

  • node nodeID or nodeObject
  • node nodeID or nodeObject
  • callback(error)

Check if upstream node is related to downstream node, stopping at threshold number of jumps.

  • upstreamNode nodeID or nodeObject
  • downstreamNode nodeID or nodeObject
  • threshold optional, defaults to 5, maximum number of steps to check
  • callback(error, related)

Check if upstream node is immediately related to downstream node by one or more relationships.

  • upstreamNode nodeID or nodeObject
  • relationship single relationship or an array of relationships
  • downstreamNode nodeID or nodeObject
  • callback(error, related)

Querying and Traversing Nodes

grafite.find(query, [...], [callback]);

Find a node with given queries. Additional queries are OR conditions. Returns a grafiteQuery object.

  • query queryObject, one or more can be used
  • callback(error, nodes) optional, if not provided query will not be executed

grafiteQuery.traverse(query, [...], [callback]);

Traverse to related nodes from a query. Must be used as a chained function from grafite.find or grafiteQuery.traverse. Additional queries are OR conditions.

  • query queryObject, one or more can be used
  • callback(error, nodes) optional, if not provided query will not be executed

grafiteQuery.sort(order, callback);

Sort the results of a query. Callback is required

  • order orderObject, one or more can be used
  • callback(error, nodes) required, must be provided

nodeObject Methods

Most of these are self explanatory. Look at their corresponding grafite methods to understand what they do.

nodeObject.traverse(query, [...], [callback]);

nodeObject.update(data, callback)

nodeObject.delete()

nodeObject.relateTo(relationship, downstreamNode, callback)

nodeObject.relatedTo(downstreamNode, callback)

nodeObject.relatedTo(relationship, downstreamNode, callback)

nodeObject.unrelateFrom(relationship, downstreamNode, callback)

nodeObject.unrelateFrom(downstreamNode, callback)

nodeObject.severFrom(node, callback)

About

MySQL graph-like database experiment

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published