var async = require('async'), keystone = require('keystone'); var Post = keystone.list('Post'); /** * List Posts */ exports.list = function(req, res) { Post.model.find(function(err, items) { if (err) return res.status(500).json('database error', err); res.json({ posts: items }); }); } /** * Get Post by ID */ exports.get = function(req, res) { Post.model.findById(req.params.id).exec(function(err, item) { if (err) return res.status(500).json('database error', err); if (!item) return res.status(404).json('not found'); res.json({ post: item }); }); } /** * Create a Post */ exports.create = function(req, res) { var item = new Post.model(), data = (req.method == 'POST') ? req.body : req.query; item.getUpdateHandler(req).process(data, function(err) { if (err) return res.status(500).json('error', err); res.json({ post: item }); }); } /** * Get Post by ID */ exports.update = function(req, res) { Post.model.findById(req.params.id).exec(function(err, item) { if (err) return res.status(500).json('database error', err); if (!item) return res.status(404).json('not found'); var data = (req.method == 'POST') ? req.body : req.query; item.getUpdateHandler(req).process(data, function(err) { if (err) return res.status(500).json('create error', err); res.json({ post: item }); }); }); } /** * Delete Post by ID */ exports.remove = function(req, res) { Post.model.findById(req.params.id).exec(function (err, item) { if (err) return res.status(500).json('database error', err); if (!item) return res.status(404).json('not found'); item.remove(function (err) { if (err) return res.status(500).json('database error', err); return res.json({ success: true }); }); }); }