From dec7922727f596da646d1ca66e4a22185597d3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Sun, 25 May 2025 21:01:56 +0200 Subject: [PATCH] added route to retrieve player by user id --- backend/controllers/player.controller.js | 25 ++++++++++++++++++------ backend/routes/player.routes.js | 4 ++++ backend/test/player.test.js | 7 +++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/backend/controllers/player.controller.js b/backend/controllers/player.controller.js index 59a64cd..7bd3c51 100644 --- a/backend/controllers/player.controller.js +++ b/backend/controllers/player.controller.js @@ -34,9 +34,7 @@ exports.findAll = (req, res) => { Player.findAll({ where: condition, - include: { - model: User - } + include: { model: User } }).then(data => { res.send(data); }).catch(err => { @@ -48,9 +46,7 @@ exports.findOne = (req, res) => { const id = req.params.id; Player.findByPk(id, { - include: { - model: User - } + include: { model: User } }).then(data => { if (data) { res.send(data); @@ -60,4 +56,21 @@ exports.findOne = (req, res) => { }).catch(err => { res.status(500).send({message: `Error retrieving user with id=${id} (${err.message}).`}); }); +} + +exports.findOneByUserId = (req, res) => { + const userId = req.params.userId; + + Player.findOne({ + where: { userId: userId }, + include: { model: User } + }).then(data => { + if (data) { + res.send(data); + } else { + res.status(404).send({message: `Cannot find player with user id=${userId}.`}); + } + }).catch(err => { + res.status(500).send({message: `Error retrieving player with user id=${userId} (${err.message}).`}); + }); } \ No newline at end of file diff --git a/backend/routes/player.routes.js b/backend/routes/player.routes.js index d3fd4f7..f548787 100644 --- a/backend/routes/player.routes.js +++ b/backend/routes/player.routes.js @@ -22,4 +22,8 @@ module.exports = function(app) { "/api/players/:id", [authJwt.verifyToken, authJwt.isCoachOrAdmin], controller.findOne); + app.get( + "/api/players/user/:userId", + [authJwt.verifyToken, authJwt.isCoachOrAdmin], + controller.findOneByUserId); }; \ No newline at end of file diff --git a/backend/test/player.test.js b/backend/test/player.test.js index b685c32..2fbdfce 100644 --- a/backend/test/player.test.js +++ b/backend/test/player.test.js @@ -34,6 +34,13 @@ describe("Test player creation, authentication and retrieval", () => { expect(response.statusCode).toBe(200); expect(response.body).toEqual(player); + response = await request(app) + .get(`/api/players/user/${player.userId}`) + .set('x-access-token', user.accessToken); + expect(response.header['content-type']).toBe('application/json; charset=utf-8'); + expect(response.statusCode).toBe(200); + expect(response.body).toEqual(player); + response = await request(app) .get('/api/players') .set('x-access-token', user.accessToken);