Code Monkey home page Code Monkey logo

graphiti's Introduction

Graphiti

Rudimentary graph model/entity plugins. This implementation works with couchdb, but the interface is flexible enough to support any db.

Install

npm i graphiti

Model/Entity Creation

var BaseModel = require('graphiti').BaseModel;
var BaseEntity = require('graphiti').BaseEntity;

var Dog = BaseModel.extend({
	schema: {
		name: {
			required: true,
			type: 'string'
		}
	}
});

var DogPound = BaseEntity.extend({
	schema: {
		name: {
			required: true,
			type: 'string'
		},
		city: {
			required: true,
			type: 'string'
		},
		state: {
			required: true,
			type: 'string'
		}
	},
	graph_schema: {
    "id": "/graph",
    "type": "object",
    "properties": {
      "model_type": {
        "enum": [
          "dog"
        ],
        "required": true
      }
    }
  }
});

Model Usage

Configure it just like any other mixdown plugin:

{
  "plugins": {
    "dogs": {
      "module": "dog",
      "options": {
        "couchdb": {
          "url": "http://localhost:5984",
          "database": "dogs"
        }
      }
    },
    "dog_pound": {
      "module": "./dog_pound.js",
      "options": {
        "couchdb": {
          "url": "http://localhost:5984",
          "database": "dogs"
        }
      }
    }
  }
}

# Insert Data

app.dogs.save({ name: 'Snoop' });

app.dogs.save({ name: 'Dre' });


var dre = app.dogs.get( ... ); //async signature omitted for brevity var snoop = app.dogs.get( ... ); //async signature omitted for brevity

var lbc = app.dog_pound.new_entity({ name: 'LBC', city: 'Long Beach', state: 'CA' });

lbc.add_content(dre); lbc.add_content(snoop); app.dog_pound.save(lbc);



# Fetch Data

Once attached to an app, you just call it:

app.dogs.get(snoop_id, function(err, snoop_dog) {
	console.log(snoop_dog.view_model());
});
app.dog_pound.get(lbc_id, function(err, record) {
	
	app.dog_pound.hydrate(record, function(err, lbc) {
		console.log(lbc.view_model());
	});

});

graphiti's People

Contributors

panthershark avatar square-waves avatar

Watchers

James Cloos avatar Mike Angstadt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.