-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpixels.js
73 lines (67 loc) · 1.74 KB
/
pixels.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const express = require('express')
const router = express.Router()
const Pixel = require('../models/pixel')
// get all pixels
router.get('/', async (req, res) => {
try{
const pixels = await Pixel.find()
res.json(pixels)
} catch (err) {
res.status(500).json({ message: err.message })
}
})
// get one pixel
router.get('/:id', getPixel, (req, res) => {
try{
res.send(res.pixel)
} catch(err) {
res.send().json({ message: err.message })
}
})
// create one pixel
router.post('/', async (req, res) => {
const pixel = new Pixel({
color: req.body.color,
})
try{
const newPixel = await pixel.save()
res.status(201).json(newPixel)
} catch (err) {
res.status(400).json({ message: err.message })
}
})
// update one pixel
router.patch('/:id', getPixel, async (req, res) => {
if (req.body.color != null) {
res.pixel.color = req.body.color
}
try {
const updatedPixel = await res.pixel.save()
res.json(updatedPixel)
} catch(err) {
res.status(400).json({ message: err.message })
}
})
// delete one
router.delete('/:id', getPixel, async(req, res) => {
try{
await res.pixel.remove()
res.json({ message: 'Successfully deleted pixel' })
} catch(err){
res.status(500).json({ message: err.message })
}
})
async function getPixel(req, res, next) {
let pixel
try{
pixel = await Pixel.findById(req.params.id)
if (pixel == null) {
return res.status(404).json({ message: "Cannot find pixel with that id" })
}
} catch(err){
return res.status(500).json({ message: err.message })
}
res.pixel = pixel
next()
}
module.exports = router