import Project from './model' import mongoose from 'mongoose' import express from 'express' export function getHandler (req, res) { /** GET handler (request one or more projects) */ let id = req.params['0'] /** check whether an id was specified. */ if (typeof id !== 'undefined') { try { id = mongoose.Types.ObjectId(id) } catch (err) { res.status(422) res.send(err) return } /** if yes, return the one project */ Project.findOne({ _id: id }) .exec((err, project) => { if (err) { res.status(404) res.send(err) return } res.json(project) }) } else { /** if not, return all projects */ const { limit, offset } = req.query Project.find() .limit(Math.min(Math.max(parseInt(limit, 10) || 20, 1), 100)) .skip(Math.max(parseInt(offset, 10) || 0, 0)) .exec((err, projects) => { if (err) { res.status(404) res.send(err) return } res.json(projects) }) } } export function postHandler (req, res) { /** POST handler (insert new projects into database) */ console.log(req.body) const project = new Project(req.body) project.save(function (err) { if (err) { res.status(422) res.send(err) return } res.send() }) } export function putHandler (req, res) { /** PUT handler (update existing project) */ const id = mongoose.Types.ObjectId(req.params['0']) Project.findOne({ _id: id }, function (err, project) { if (err) { res.status(404) res.send(err) } console.log(project, req.body) for (let prop in req.body) { project[prop] = req.body[prop] } project.save(function (err) { if (err) { res.status(422) res.send(err) } res.send() }) }) } export function deleteHandler (req, res) { /** DELETE handler (delete project) */ const id = mongoose.Types.ObjectId(req.params['0'].substring(1)) Project.remove({ _id: id }, function (err, project) { if (err) { res.send(err) } res.send() }) } const router = express.Router() router.get(/\/(\w+)?\/?$/, getHandler) router.post('/', postHandler) router.put(/\/(\w+)?\/?$/, putHandler) router.delete('/', deleteHandler) export default router