daoi
v1.0.6
Published
data access object interface with support for pluggable implementations based on versioned specs
Downloads
16
Readme
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: '[email protected]' });
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'});