Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 103 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@ const data = {

app.get('/vegetables', (req, res, next) => {
const { vegetables } = data
res.json(vegetables)
const { name } = req.query

if(name) {
res.json(vegetables.filter(v => v.name.includes(name)))
} else {
res.json(vegetables)
}
})

app.get('/vegetables/:id', (req, res, next) => {
Expand All @@ -38,6 +44,102 @@ app.post('/vegetables', helpers.validate, (req, res, next) => {
res.status(201).json(vegetable)
})

app.delete('/vegetables/:id', (req, res, next) => {
const { vegetables } = data
const { id } = req.params
const pos = vegetables.findIndex(veggie => veggie.id === id)

if (pos < 0) {
const message = `Could not find vegetable with ID of ${id}`
next({ status: 404, message })
} else {
const removedVeg = vegetables[pos]
vegetables.splice(pos,1)
res.json(removedVeg)
}
})

app.put('/vegetables/:id', helpers.validate, (req, res, next) => {
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 })
} else {
vegetable.name = req.body.name
vegetable.price = req.body.price
res.json(vegetable)
}
})

// Fruits

app.get('/fruits', (req, res, next) => {
const { fruits } = data
const { name } = req.query

if(name) {
res.json(fruits.filter(f => f.name.includes(name)))
} else {
res.json(fruits)
}
})

app.get('/fruits/:id', (req, res, next) => {
const { fruits } = data
const { id } = req.params
const fruit = fruits.find(f => f.id === id)

if (!fruit) {
const message = `Could not find fruit with ID of ${id}`
next({ status: 404, message })
}

res.json(fruit)
})

app.post('/fruits', helpers.validate, (req, res, next) => {
const { fruits } = data
const fruit = { id: generateId(), ...req.body }

fruits.push(fruit)
res.status(201).json(fruit)
})

app.delete('/fruits/:id', (req, res, next) => {
const { fruits } = data
const { id } = req.params
const pos = fruits.findIndex(f => f.id === id)

if (pos < 0) {
const message = `Could not find fruit with ID of ${id}`
next({ status: 404, message })
} else {
const removedFruit = fruits[pos]
fruits.splice(pos,1)
res.json(removedFruit)
}
})

app.put('/fruits/:id', helpers.validate, (req, res, next) => {
const { fruits } = data
const { id } = req.params
const fruit = fruits.find(f => f.id === id)

if (!fruit) {
const message = `Could not find fruit with ID of ${id}`
next({ status: 404, message })
} else {
fruit.name = req.body.name
fruit.price = req.body.price
res.json(fruit)
}
})

// end fruits

app.use((req, res, next) => {
next({
status: 404,
Expand Down