const express = require('express') const router = express.Router() const Vegetables = require('../middleware/Vegetables') const Pictures = require('../middleware/Pictures') const Properties = require('../middleware/VegetableProperties') module.exports = function (passport) { const basePath = '/api/types/:vegetableTypesId/vegetables' const itemPath = basePath + '/:vegetablesId' const picturesPath = itemPath + '/pictures' const picturePath = picturesPath + '/:pictureId' const propertiesPath = itemPath + '/properties' const propertyPath = propertiesPath + '/:propertyId' /* Vegetables */ 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) } }) } ) /* Vegetable */ 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) } }) } ) /* Pictures */ 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) } }) } ) /* Picture */ 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) } }) } ) /* Properties */ router.route(propertiesPath) .get( function (req, res) { Properties.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 property = new Properties() property.createOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(201).json(item) } }) } ) /* Property */ router.route(propertyPath) .get( function (req, res) { Properties.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 property = new Properties() property.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 property = new Properties() property.deleteOne(req, function (err, item) { if (err) { res.status(item || 500).send(err.message) } else { res.status(200).json(item) } }) } ) return router }