0.0.4 • Published 9 years ago

mongoose-status-manager v0.0.4

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

Mongoose Status Manager

Add status schema to your object, and allow status history tracking

npm install mongoose-status-manager

Plug it in to your schema...

var db = require('mongoose'),
    var statusManagerPlugin = require('mongoose-status-manager'),
    OrderSchema = db.Schema(),

    OrderSchema(statusManagerPlugin);

Make the model...

var Order = db.model('order', OrderSchema);

Make the instance or find the instance with the statics below ...

Now, you can update the status of an order like so:

var order = new Order();
order.setStatus('pending');

order.status will be 'pending' as elected.
Also, order.status_updates will be an array:

[
  {
    status: 'pending', date: "2014-09-26T12:29:17.781Z"
  }
]

Use the statics...

Order.findByStatus - finds all orders for the given status

Adds these handy methods on the instance...

order.updateStatus('status', {meta}) // updates the status with the specified status, and sets the (optional) meta properties in the status_updates

For example:

order.updateStatus('cancelled', {reason: 'just because});

... would result in the order.status_updates being an array like this:

[
  {
     status: 'cancelled', date: "2014-09-26T12:29:17.781Z", reason: 'just because'
  }
]

##Querying##

You can query for documents by status with findByStatus like this:

Order.findByStatus('complete', function(err, docs){ 
  //docs has all docs with status of 'complete'
});

Optionally, you can also pass in a meta object into the query:

Order.findByStatus('complete', {reason: 'error'}, function(err, docs){ 
  //docs has all docs with status of 'complete' and where the last status update reason was 'error'
});

You can pass in an empty status to query just by meta:

Order.findByStatus('', {reason: 'error'}, function(err, docs){ 
  //docs has all docs where the last status update reason was 'error', regardless of status
});

####//ToDo### Enhance the querying to be able to return docs if the 'reason' was error at any status_update


Please look at the tests for further use.

If you find a bug, let me know or fix it yourself, this is open source!

MIT