sails-arangodb
This is a fork of partoutx/sails-arangodb project
Important notes!
1) Do not use "__" in table names. The adapter uses tableName.indexOf('__') to detect automatically generated Sails tables
2) Do not use Migration: Alter. This type of migration does not work
Description
Provides easy access to ArangoDB
from Sails.js & Waterline.
Take a look at sails-arangodb-demo for more up-to-date examples.
This module is a Waterline/Sails adapter, an early implementation of a rapidly-developing, tool-agnostic data standard. Its goal is to provide a set of declarative interfaces, conventions, and best-practices for integrating with all sorts of data sources. Not just database s-- external APIs, proprietary web services, or even hardware.
Strict adherence to an adapter specification enables the (re)use of built-in generic test suites, standardized documentation, reasonable expectations around the API for your users, and overall, a more pleasant development experience for everyone.
This adapter has been developed pretty quickly and may contain bugs.
Installation
To install this adapter, run:
$ npm install @voroneril/sails-arangodb
Usage
This adapter exposes the following methods:
find()
create()
update()
destroy()
createGraph()
# Create a Named Graph
neighbors()
# Experimental, method signature is subject to change
createEdge()
# Experimental, method signature is subject to change
deleteEdge()
# Experimental, method signature is subject to change
Connection
Check out Connections in the Sails docs, or see the config/connections.js
file in a new Sails project for information on setting up adapters.
in connection.js
localArangoDB: {
adapter: 'sails-arangodb',
host: 'localhost',
port: 8529,
user: 'root',
password: 'CgdYW3zBLy5yCszR',
database: '_system'
collection: 'examplecollection' // ArangoDB specific
}
Schema for Graphs
Defining a Named Graph in the Schema
/*jshint node: true, esversion: 6*/
'use strict';
const Waterline = require('waterline');
const UsersProfilesGraph = Waterline.Collection.extend({
identity: 'users_profiles_graph',
schema: true,
connection: 'arangodb',
attributes: {
// this is a named graph
$edgeDefinitions: [
{
collection: 'users_profiles',
from: ['users_1'],
to: ['profiles_1']
}
]
}
});
module.exports = UsersProfilesGraph;
If a model has an attribute called $edgeDefinitions
then the model becomes a named
graph. Any further attributes are ignored.
See tests for further examples.
Unit Testing
To run unit-tests every time you save a change to a file, simply:
$ gulp
One off run of sails-arangodb specific tests (same as above):
$ gulp test # or mocha
(Important: you must create a test.json file for your local db instance first - see test/README.md)
To run the waterline adapter compliance tests:
$ gulp waterline
Code Coverage
Both of the mocha and waterline tests are run through nyc/istanbul code coverage
analysis tools. A text summary is show at the end of each test run and a coverage/
folder created containing a html lcov report that you can point your browser to.
Generating api jsdocs:
$ gulp docs
(these are also generated in the default 'watch' mode above)
License
MIT © 2016 Gabriel Letarte (gabriel-letarte) & [thanks to] Taneli Leppä (rosmo) & [thanks to] vjsrinath & [thanks to] balderdashy, Mike McNeil, Balderdash & contributors
This adapter has been developed using vjsrinath's sails-orientdb as a template.
Sails is free and open-source under the MIT License.