repositories
v0.7.2
Published
Generic IRepository implementation for common data stores in node.js
Downloads
72
Maintainers
Readme
repositories
Installation
$ npm install --save repositories
Usage
const repositories = require('repositories');
AJAX
Store some data on a remote server implementing a RESTful API.
const AJAXRepository = require('repositories').AJAXRepository;
const ajaxRepo = new AJAXRepository('http://localhost:3000/api/cats');
ajaxRepo.add({name:'Fido'}, (err, data) => {
console.log(data);
});
Redis
const redis = require('redis');
const RedisRepository = require('repositories').RedisRepository;
const redisRepo = new RedisRepository(redis, 'Cats');
redisRepo.add({name:'Fido'}, (err, data) => {
console.log(data);
redisRepo.disconnect();
});
Sequelize (PostgreSQL)
/** requires you to install sequelize and pg */
const PostgreRepository = require('repositories').PostgreRepository;
const Sequelize = require('sequelize');
sequelize = new Sequelize('test', 'admin', 'admin', {
host: 'localhost',
dialect: 'postgres'
});
const modelName = 'clients';
var schema = sequelize.define(modelName, {
_id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING
});
const sequelizeRepo = new PostgreRepository(sequelize, modelName);
sequelizeRepo.add({name:'Fido'}, (err, data) => {
console.log(data);
});
sequelizeRepo.findAll((err, data) => {
console.log(data);
sequelizeRepo.disconnect();
});
Cassandra
const CassandraRepository = require('repositories').CassandraRepository;
const Cassandra = require('express-cassandra');
const cassandra = Cassandra.createClient({
clientOptions: {
contactPoints: ['127.0.0.1'],
protocolOptions: { port: 9042 },
keyspace: 'mykeyspace',
queryOptions: { consistency: Cassandra.consistencies.one }
},
ormOptions: {
defaultReplicationStrategy: {
class: 'SimpleStrategy',
replication_factor: 1
},
migration: 'safe',
createKeyspace: true
}
});
export const modelName = 'Cats';
export const schema = {
fields: {
_id: 'text',
name: 'text'
},
key: ['_id']
};
let cassandraRepo;
cassandra.connect(() => {
cassandra.loadSchema(modelName, schema);
cassandraRepo = new CassandraRepository(cassandra, modelName);
cassandraRepo.add({name:'Fido'}, (err, data) => {
console.log(data);
cassandraRepo.disconnect();
});
});
Filesystem Repository
Create a database out of a local file. Configurable for different file formats.
const FSRepository = require('repositories').FSRepository;
const repo = new FSRepository('./data.json');
// default json format
const cat = { name : 'Fido' };
repo.add(cat, (err, data) => {
console.log(data);
repo.disconnect(); //not really
});
// ini istead of json
const INISerializer = require('repositories/lib/serializers/INISerializer');
repo.use(new INISerializer());
// ...
Mongoose Repository
const mongoose = require('mongoose');
const modelName = 'cats';
const schema = new mongoose.Schema({
name: { type: String }
});
mongoose.model(modelName, schema);
mongoose.connect('mongodb://localhost');
const MongooseRepository = require('repositories').MongooseRepository;
const repo = new MongooseRepository(mongoose, modelName);
// default json format
const cat = { name : 'Fido' };
repo.add(cat, (err, data) => {
console.log(data);
repo.disconnect();
});
MongoDB Native Repository
const MongoClient = require('mongodb').MongoClient;
const collection = 'cats';
const MongoRepository = require('repositories').MongoRepository;
let repo;
MongoClient.connect('mongodb://admin:admin@localhost:27017/travis', (err, db) => {
if (err) {
// Handle error and return (or throw)
}
repo = new MongoRepository(db, collection);
repo.add({name:'Fido'}, (err, data) => {
console.log(data);
repo.disconnect();
});
}
Contributing
Make sure the tests pass :D
License
MIT © Ben Lugavere