0.7.2 • Published 9 years ago

repositories v0.7.2

Weekly downloads
16
License
MIT
Repository
github
Last release
9 years ago

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

0.7.2

9 years ago

0.7.1

9 years ago

0.7.0

9 years ago

0.6.4

9 years ago

0.6.3

9 years ago

0.6.2

9 years ago

0.6.1

10 years ago

0.6.0

10 years ago

0.5.2

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.0

10 years ago