From 6705f06e183949af03ca0f247b9d516eaf90b2c6 Mon Sep 17 00:00:00 2001 From: sudoer777 <78781902+sudoer777@users.noreply.github.com> Date: Fri, 26 Nov 2021 16:16:11 -0700 Subject: [PATCH] Add better error handling for data.js route --- routes/data.js | 167 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 121 insertions(+), 46 deletions(-) diff --git a/routes/data.js b/routes/data.js index d241947..dfe6b8d 100644 --- a/routes/data.js +++ b/routes/data.js @@ -11,75 +11,150 @@ var accounts = require('../database/accounts/accounts'); var checkLoginStatus = require('./checkLoginStatus'); -router.get('/sports', function(req, res, next) { - sports.retrieveAll() - .then(data => res.json(data)); +router.get('/sports', async function(req, res, next) { + try { + const data = await sports.retrieveAll(); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }); -router.get('/sport', function(req, res, next) { - sports.getFromID(req.query.sport) - .then(data => res.json(data)); +router.get('/sport', async function(req, res, next) { + try { + const sportID = req.query.sport; + const data = await sports.getFromID(sportID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }); -router.get('/seasons', function(req, res, next) { - seasons.retrieveAll() - .then(data => res.json(data)); +router.get('/seasons', async function(req, res, next) { + try { + const data = await seasons.retrieveAll(); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/genders', function(req, res, next) { - genders.retrieveBySport(req.query.sport) - .then(data => res.json(data)); +router.get('/genders', async function(req, res, next) { + try { + const sportID = req.query.sport; + const data = await genders.retrieveBySport(sportID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/divisions', function(req, res, next) { - let gender; - if(req.query.gender) gender = (req.query.gender == 'female' ? genders.FEMALE : genders.MALE); +router.get('/divisions', async function(req, res, next) { + try{ + let gender; + if(req.query.gender) gender = (req.query.gender == 'female' ? genders.FEMALE : genders.MALE); - divisions.retrieve(req.query.sport, gender) - .then(data => res.json(data)); + const sportID = req.query.sport; + const data = await divisions.retrieve(sportID, gender); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/division', function(req, res, next) { - divisions.getFromID(req.query.division) - .then(data => res.json(data)); +router.get('/division', async function(req, res, next) { + try { + const divisionID = req.query.division; + const data = await divisions.getFromID(divisionID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/teams', function(req, res, next) { - teams.retrieve(req.query.sport) - .then(data => res.json(data)); +router.get('/teams', async function(req, res, next) { + try { + const sportID = req.query.sport; + const data = await teams.retrieve(sportID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/team', function(req, res, next) { - teams.getFromID(req.query.team) - .then(data => res.json(data)); +router.get('/team', async function(req, res, next) { + try { + const teamID = req.query.team; + const data = await teams.getFromID(teamID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/games', function(req, res, next) { - const userID = req.user ? req.user[0] : null; - if(req.query.user) games.retrieveByUser(userID).then(data => res.json(data)); - else games.retrieve(req.query.team, req.query.division, req.query.season).then(data => res.json(data)); +router.get('/games', async function(req, res, next) { + try { + const userID = req.user ? req.user[0] : null; + if(req.query.user) { + const data = await games.retrieveByUser(userID); + res.json(data); + } else { + const seasonID = req.query.season; + const divisionID = req.query.division; + const teamID = req.query.team; + const data = await games.retrieve(teamID, divisionID, seasonID); + res.json(data); + } + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/game', function(req, res, next) { - games.getFromID(req.query.game) - .then(data => res.json(data)); +router.get('/game', async function(req, res, next) { + try { + const gameID = req.query.game; + const data = await games.getFromID(gameID); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/accounts', checkLoginStatus.admin, function(req, res, next) { - accounts.retrieveAll() - .then(data => res.json(data)); +router.get('/accounts', checkLoginStatus.admin, async function(req, res, next) { + try { + const data = await accounts.retrieveAll(); + res.json(data); + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); + } }) -router.get('/account', checkLoginStatus.user, function(req, res, next) { - const userIsAdmin = req.user[2]; - const loggedInAccountID = req.user[0]; - const requestedAccountID = req.query.account; - - if(!userIsAdmin && loggedInAccountID != requestedAccountID) { - res.status(403).send("ACCESS DENIED"); - } else { - accounts.getFromID(req.query.account) - .then(data => res.json(data)); +router.get('/account', checkLoginStatus.user, async function(req, res, next) { + try{ + const userIsAdmin = req.user[2]; + const loggedInAccountID = req.user[0]; + const requestedAccountID = req.query.account; + + if(!userIsAdmin && loggedInAccountID != requestedAccountID) { + res.status(403).send("ACCESS DENIED"); + } else { + const data = await accounts.getFromID(req.query.account); + res.json(data); + } + } catch(err) { + console.error("ERROR: " + err.message); + res.status(500).send("An error has occurred"); } })