all files / todo/models/ task.js

100% Statements 19/19
100% Branches 6/6
100% Functions 6/6
100% Lines 19/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84                                                                                                                                 
//START:ALL
var db = require('../db');
var ObjectId = require('mongodb').ObjectId;
//END:ALL
//START:VALIDATE
var validateTask = require('../public/javascripts/common/validate-task');
//END:VALIDATE
//START:ALL
 
var collectionName = 'tasks';
 
module.exports = {
  all: function(callback) {
    db.get().collection(collectionName).find().toArray(callback);
  },
 
//END:ALL
 
//START:GET
  get: function(taskId, callback) {
    db.get().collection(collectionName)
      .findOne({'_id': new ObjectId(taskId)}, callback);
  },
//END:GET
 
//START:ADD1
  validate: validateTask,
//END:ADD1
 
//START:ADD  
//START:ADD_POSITIVE
//START:ADD_DUPLICATE
  add: function(newTask, callback) {
//END:ADD_DUPLICATE
//END:ADD_POSITIVE 
//START:ADD_DUPLICATE
 
    var found = function(err, task) {
      if(task)
        callback(new Error('duplicate task'));
      else
//START:ADD_POSITIVE
        db.get().collection(collectionName).insert(newTask, callback);
//END:ADD_POSITIVE
   }                  
   
//END:ADD_DUPLICATE
//START:ADD2
//START:ADD3
    if(this.validate(newTask))
//START:ADD_DUPLICATE
      db.get().collection(collectionName).findOne(newTask, found);
//END:ADD_DUPLICATE
//END:ADD2
    else
      callback(new Error("unable to add task"));
//END:ADD3
//START:ADD_POSITIVE
//START:ADD_DUPLICATE
  },
//END:ADD_DUPLICATE
//END:ADD_POSITIVE
//END:ADD  
               
//START:DELETE
//START:DELETE1
  delete: function(taskId, callback) {
    var handleDelete = function(err, result) {
//END:DELETE1
      if(result.deletedCount != 1)
        callback(new Error("unable to delete task with id: " + taskId));
      else
//START:DELETE1
        callback(null);      
    }
 
    db.get().collection(collectionName)
      .deleteOne({'_id': new ObjectId(taskId)},  handleDelete);
  },
//END:DELETE1 
//END:DELETE
//START:ALL
}
//END:ALL