From eb53acb2ab75938299705983493fe62636db75dd Mon Sep 17 00:00:00 2001 From: Andrej Rasevic <andrej@rasevicengineering.com> Date: Wed, 7 Jul 2021 10:08:54 -0400 Subject: [PATCH] completing players api --- CodeExamples/Week6/players-api/route.rest | 20 ++++++- .../Week6/players-api/routes/players.js | 54 +++++++++++++++++-- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/CodeExamples/Week6/players-api/route.rest b/CodeExamples/Week6/players-api/route.rest index 313e33e..fa96ecb 100644 --- a/CodeExamples/Week6/players-api/route.rest +++ b/CodeExamples/Week6/players-api/route.rest @@ -10,4 +10,22 @@ Content-Type: application/json "sportAffiliatedWith": "tennis", "countryOfBirth": "USA", "active": "false" -} \ No newline at end of file +} + +### + +GET http://localhost:4000/players/60e5b14706e73b46598cf557 + +### + +DELETE http://localhost:4000/players/60e5b3858f53ff46d02a54a3 + +### + +PUT http://localhost:4000/players/60e5b14706e73b46598cf557 +Content-Type: application/json + +{ + "countryOfBirth": "USA", + "active": false +} diff --git a/CodeExamples/Week6/players-api/routes/players.js b/CodeExamples/Week6/players-api/routes/players.js index 21a7e7f..fd62f9e 100644 --- a/CodeExamples/Week6/players-api/routes/players.js +++ b/CodeExamples/Week6/players-api/routes/players.js @@ -35,15 +35,63 @@ router.post('/', async (req, res) => { // retrieve a single player in our database - +router.get('/:id', getPlayer, logPlayer, async (req, res) => { + res.json(res.player) +}) // update a single player in our database - - +router.put('/:id', getPlayer, async (req, res) => { + if (req.body.name != null) { + res.player.name = req.body.name + } + if (req.body.sportAffiliatedWith != null) { + res.player.sportAffiliatedWith = req.body.sportAffiliatedWith + } + if (req.body.countryOfBirth != null) { + res.player.countryOfBirth = req.body.countryOfBirth + } + if (req.body.active != null) { + res.player.active = req.body.active + } + try { + const updatedPlayer = await res.player.save() + res.json(updatedPlayer) + } catch (err) { + res.status(400).json({ message: err.message}) + } +}) // delete a single player in our database +router.delete('/:id', getPlayer, async (req, res) => { + try { + await res.player.remove() + res.json({message: 'Successfully deleted player'}) + } catch (err) { + res.status(500).json({message: err.message}) + } +}) + +// example of custom middleware +async function getPlayer(req, res, next) { + let player + try { + player = await Player.findById(req.params.id) + if (player == null) { + return res.status(404).json({message: 'Player not found'}) + } + } catch (err) { + return res.status(500).json({message: err.message}) + } + res.player = player + next() +} + +function logPlayer(req, res, next) { + console.log(res.player) + next() +} module.exports = router \ No newline at end of file -- GitLab