Giter Club home page Giter Club logo

anystore's Introduction

NPM version Build Status Coverage Status npm

Datastore Logo

Anystore

Anystore allow you to persist your datas into any store like a simple memory store, or Redis (soon MongoDB, mySQL).

It provides a generic store class that seamlessly wraps a database provider implementation.

Why?

The goal of this project is to provide a light and easy way to persist JSON datas with indexes and entities associations.

Installation

$ npm install anystore --save

Additional provider installation

Depending of the store you want to use, you will need some additional modules :

  • Redis :
$ npm install redis hiredis --save

Look at the examples in optionalDependencies of package.json

Getting started

Create an entity and get it back : example1

const Anystore = require('anystore');

const store = new Anystore.stores.MemoryStore(); // Default memory store provided for test purpose

store.start()
  .then(() => store.create('Contact', {username: 'doe', firstname: 'John', lastname: 'Doe'}))
  .then(data => {
    console.log('saved data :', data);
    return data.id;
  })
  .then(id => store.load('Contact', id))
  .then(data => {
    console.log('fetched data back again :', data);
  })
  .then(() => store.stop());

Anystore is a base class overriden by every store implementation. All available stores classes are exposed with "stores" static attribute.

In this example, the store is an instance of MemoryStore class.

Result :

$ node samples/example1
saved data : { firstname: 'John',
  lastname: 'Doe',
  id: '97ff185e-353c-48c8-b13d-f242ae996c84' }
fetched data back again : { firstname: 'John',
  lastname: 'Doe',
  id: '97ff185e-353c-48c8-b13d-f242ae996c84' }

The generated ID is a UUID v4.

Datastore API doc

Almost all provided methods are asynchronous, they accept a callback as last argument, and return a promise.

Lifecycle :

  • new Anystore(opt) : create a datastore instance and, if opt is given, initialize it
  • init(opt) : synchronously initialize the store
  • start(opt, cb) : start the datastore (and initialize if needed)
  • stop(cb) : stop the datastore

Store features :

All features take a type (collection name) as first argument.

Basic features :

  • CRUD : create / read / update / delete an entity
  • List all entities of type
  • Find any entity by index (schema required)
  • Dump the store
  • Reset the store

For more information, look at API doc

TODO

Options :

TODO

Provider specific options :

Databases support

Currently, following database systems are supported :

  • Redis
  • Memory : in-memory store for test purpose

Use cases

TODO

For more complete examples look at mocha tests

Enjoy !

anystore's People

Contributors

openhoat avatar

Watchers

 avatar  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.