diff --git a/CodeExamples/Week6/players-api/route.rest b/CodeExamples/Week6/players-api/route.rest index 313e33ec950809ff80aae63dc2c2be5eb74757ce..fa96ecb7e9191e7307a6cfc66a87fb7db879dd18 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 21a7e7f6d5932a22ec3fc3cd3d4ac86227e4035a..fd62f9ebf516b91cb6e624695769b182b91d111f 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