UNPKG

lpio

Version:

The last dashboard app you'll ever need

90 lines (76 loc) 2.46 kB
var Q = require('q'); var _ = require('underscore'); var widgets = require('../../../database').widgets; var log = require('../../../log'); // CRUD operations // Create Widget exports.createWidget = function(req, res, next){ var widget = _.extend({}, req.body); // @TODO: Add validation return Q.ninvoke(widgets,'insert',widget) .then(function(newdoc){ res.json({ status:"ok", message:"Your new widget with id: "+newdoc._id+" was created", data:{ id:newdoc._id } }); }).catch(function(err){ log.error(err,"Error creating Widget"); next( new Error ("Error creating Widget")); }); } // Update Widget exports.updateWidget = function(req, res, next){ var widget = _.extend({}, req.body); var id = req.params.id; // @TODO: Add validation return Q.ninvoke(widgets,'update',{_id:id},widget,{}) .then(function(numUpdated){ if(numUpdated >= 1) { res.json({ status: "ok", message: "Your widget with id: " + id + " was updated", data: { id: id } }); }else { throw new Error("Not updated"); } }).catch(function(err){ log.error(err,"Error updating Widget"); next( new Error ("Error updating Widget")); }); } // Delete Widget exports.deleteWidget = function(req, res, next){ var id = req.params.id; return Q.ninvoke(widgets,'remove',{_id:id},{}) .then(function(numRemoved){ if(numRemoved >= 1){ res.json({ status:"ok", message:"Widget deleted" }); } }).catch(function(err){ log.error(err,"Error deleting Widget"); next( new Error ("Error deleting Widget")); }); } // Get By ID exports.getWidgetByID = function(req,res,next){ var id = req.params.id; return Q.ninvoke(widgets,'findOne',{_id:id}) .then(function(widget){ if(widget == null){ return next(new Error("Not Found")); } res.json(widget); }).catch(function(err){ log.error(err); next(new Error("Error retrieving widget")); }); }