daoi

1.0.6 • Public • Published

DAO

Simple Data Access Object interface with support for pluggable implementations based on versioned specs

Sample code

var dao = require('daoi');
var s3DaoAdapter = require('s3DaoAdapter');

dao
.use(s3DaoAdapter)
.on('create', function(model){
    // persisted model
})
.on('error', function(err){
    // error handler
})
.config({ storage: 'mybucket/users.json' })
.create({ name: 'joe', email: 'joe@test.com' });

Installation

npm install daoi --save

Implementations

daoi is just an interface. You need a concrete dao implementation in order to persist your models. Currently there is only one known implementation for AWS S3: dao-s3 (v0 compliant).

Below are the operations required to be implemented by a concrete dao implementation grouped by the compliance level. A dao implementation must be at least v0 compliant.

v0 compliant operations: create, read, update, delete

v1 compliant operations: v0 operations + count, find, findOne, remove

v2 compliant operations: v1 operations + save, upsert, bulkCreate, bulkUpdate, bulkDelete

Helpers

Once an implementor is set via dao.use(...), the complicance level can be queried using dao.getComplianceLevel().

The dao interface is completely model agnostic. A dao concrete implementation should handle any model. An additional register method allows for model discrimination via an injected $type property in the supplied model:

var userDao = dao.use(myAdapter).register('user');

userDao
.on('create', function(model){
    // model.$type === 'user' 
})
.create({name:'test'});

Readme

Keywords

none

Package Sidebar

Install

npm i daoi

Weekly Downloads

6

Version

1.0.6

License

MIT

Last publish

Collaborators

  • clonq