From 8ae9ea71b38ccce18965e19a9585edf957eb785f Mon Sep 17 00:00:00 2001 From: kleinlowe Date: Tue, 9 Jul 2019 23:03:23 -0700 Subject: [PATCH] incomplete but better than nothing --- app.js | 68 +++++++++++++++++++++++++++++++++----------------- src/helpers.js | 18 ++++++------- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/app.js b/app.js index d2e92a4..10940d1 100644 --- a/app.js +++ b/app.js @@ -8,47 +8,69 @@ if (NODE_ENV === 'development') app.use(require('morgan')('dev')) app.use(require('body-parser').json()) const data = { - fruits: [], - vegetables: [] + fruits: [], + vegetables: [] } app.get('/vegetables', (req, res, next) => { - const { vegetables } = data - res.json(vegetables) + const { vegetables } = data + if (req.query) { + let name = req.query.name + const vegetable = vegetables.find(veggie => veggie.name === name) + res.json(vegetable) + } else { + res.json(vegetables) + } }) + + + app.get('/vegetables/:id', (req, res, next) => { - const { vegetables } = data - const { id } = req.params - const vegetable = vegetables.find(veggie => veggie.id === id) + const { vegetables } = data + const { id } = req.params + const vegetable = vegetables.find(veggie => veggie.id === id) + + if (!vegetable) { + const message = `Could not find vegetable with ID of ${id}` + next({ status: 404, message }) + } + + res.json(vegetable) +}) - if (!vegetable) { - const message = `Could not find vegetable with ID of ${id}` - next({ status: 404, message }) - } +app.delete('/vegetables/:id', (req, res, next) => { + const { vegetables } = data + const { id } = req.params + const vegetable = vegetables.indexOf(veggie => veggie.id === id) + if (vegetable === -1) { + const message = `Could not find vegetable with ID of ${id}` + next({ status: 404, message }) + } + data.splice(vegetable, 1) + res.status(200).json(vegetable) - res.json(vegetable) }) app.post('/vegetables', helpers.validate, (req, res, next) => { - const { vegetables } = data - const vegetable = { id: generateId(), ...req.body } + const { vegetables } = data + const vegetable = { id: generateId(), ...req.body } - vegetables.push(vegetable) - res.status(201).json(vegetable) + vegetables.push(vegetable) + res.status(201).json(vegetable) }) app.use((req, res, next) => { - next({ - status: 404, - message: `Could not ${req.method} ${req.path}` - }) + next({ + status: 404, + message: `Could not ${req.method} ${req.path}` + }) }) app.use((err, req, res, next) => { - const { message, status } = err - res.status(status).json({ message }) + const { message, status } = err + res.status(status).json({ message }) }) const listener = () => console.log(`Listening on Port ${PORT}!`) -app.listen(PORT, listener) +app.listen(PORT, listener) \ No newline at end of file diff --git a/src/helpers.js b/src/helpers.js index 3c761e6..d45393a 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1,15 +1,15 @@ -const REQUIRED_KEYS = [ 'name', 'price' ] +const REQUIRED_KEYS = ['name', 'price'] const validate = (req, res, next) => { - const error = { status: 400, message: 'Bad request' } - if (!req.body) next(error) + const error = { status: 400, message: 'Bad request' } + if (!req.body) next(error) - const hasAllKeys = REQUIRED_KEYS.every(key => req.body[key]) - if (!hasAllKeys) next(error) + const hasAllKeys = REQUIRED_KEYS.every(key => req.body[key]) + if (!hasAllKeys) next(error) - const noExtraKeys = Object.keys(req.body).every(key => REQUIRED_KEYS.includes(key)) - if (!noExtraKeys) next(error) + const noExtraKeys = Object.keys(req.body).every(key => REQUIRED_KEYS.includes(key)) + if (!noExtraKeys) next(error) - next() + next() } -module.exports = { validate } +module.exports = { validate } \ No newline at end of file