const express = require('express') const router = express.Router() const Vegetables = require('../middleware/Vegetables') const Pictures = require('../middleware/Pictures') module.exports = function (passport) { const basePath = '/api/types/:vegetableTypesId/vegetables' const itemPath = basePath + '/:vegetablesId' const picturesPath = itemPath + '/pictures' const picturePath = picturesPath + '/:pictureId' router.route(basePath) .get( function (req, res) { Vegetables.getAll(req, function (err, items) { if (err) { res.status(items || 500).send(err.message) } else { res.status(200).json(items) } }) } ) .post( passport.authenticate(['basic-auth']), function (req, res) { const vegetable = new Vegetables() vegetable.createOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(201).json(item) } }) } ) router.route(itemPath) .get( function (req, res) { Vegetables.getOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) .patch( passport.authenticate(['basic-auth']), function (req, res) { const vegetable = new Vegetables() vegetable.patchOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) .delete( passport.authenticate(['basic-auth']), function (req, res) { const vegetable = new Vegetables() vegetable.deleteOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) router.route(picturesPath) .get( function (req, res) { Pictures.getAll(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) .post( passport.authenticate(['basic-auth']), function (req, res) { const picture = new Pictures() picture.createOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(201).json(item) } }) } ) router.route(picturePath) .get( function (req, res) { Pictures.getOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) .delete( passport.authenticate(['basic-auth']), function (req, res) { const picture = new Pictures() picture.deleteOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) return router }