lpio
Version:
The last dashboard app you'll ever need
90 lines (76 loc) • 2.46 kB
JavaScript
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"));
});
}