'use strict'; // modules const express = require('express'); // HTTP status codes by name const codes = require('./http-codes'); const routerHandling = require('../middleware/router-handling'); // Mongoose Model using mongoDB const AppUserModel = require('../models/app-user'); const account = new express.Router(); account.route('/') .get((req, res, next) => { AppUserModel.find({}, {}, {sort: {username: 1}}) .populate('squad') .exec((err, items) => { if (err) { err.status = codes.servererror; return next(err); } res.locals.items = items; res.locals.processed = true; next(); }); }) .all( routerHandling.httpMethodNotAllowed ); // routes ********************** account.route('/:id') .get((req, res, next) => { AppUserModel.findById(req.params.id) .populate('squad') .exec((err, item) => { if (err) { err.status = codes.servererror; } else if (!item) { err = new Error('item not found'); err.status = codes.notfound; } res.locals.items = item; next(err); }); }) .patch((req, res, next) => { if (!req.body || (req.body._id && req.body._id !== req.params.id)) { const err = new Error( 'id of PATCH resource and send JSON body are not equal ' + req.params.id + ' ' + req.body._id); err.status = codes.notfound; return next(err); } req.body.updatedAt = new Date(); req.body.$inc = {__v: 1}; AppUserModel.findByIdAndUpdate(req.params.id, req.body, {new: true}) .populate('squad') .exec((err, item) => { if (err) { err.status = codes.wrongrequest; } else if (!item) { err = new Error('appUser not found'); err.status = codes.notfound; } else { res.locals.items = item; } next(err); }); }) .delete((req, res, next) => { AppUserModel.findByIdAndRemove(req.params.id, (err, item) => { if (err) { err.status = codes.wrongrequest; } else if (!item) { err = new Error('item not found'); err.status = codes.notfound; } res.locals.processed = true; next(err); }); }) .all( routerHandling.httpMethodNotAllowed ); account.use(routerHandling.emptyResponse); module.exports = account;