repositories
TypeScript icon, indicating that this package has built-in type declarations

0.7.2 • Public • Published

repositories NPM versiondependencies Status Coverage StatusNPM DownloadsBuild StatusPatreon

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

Package Sidebar

Install

npm i repositories

Weekly Downloads

21

Version

0.7.2

License

MIT

Last publish

Collaborators

  • blugavere