From 17f14573e94647befee47ca1190902f46103b484 Mon Sep 17 00:00:00 2001 From: sudoer777 <78781902+sudoer777@users.noreply.github.com> Date: Mon, 22 Nov 2021 16:00:12 -0700 Subject: [PATCH] Add functionality to get all games from database --- database/scores/games.js | 25 +++++++++++++++++++------ public/scripts/data.js | 10 ++++++++-- routes/data.js | 2 +- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/database/scores/games.js b/database/scores/games.js index 265dd56..9f27bab 100644 --- a/database/scores/games.js +++ b/database/scores/games.js @@ -5,13 +5,15 @@ const database = require('./../database'); class Game { - constructor(id, date, team1ID, team2ID, team1Score, team2Score) { + constructor(id, date, team1ID, team2ID, team1Score, team2Score, divisionID, seasonID) { this.id = id; this.date = date; this.team1ID = team1ID; this.team2ID = team2ID; this.team1Score = team1Score; this.team2Score = team2Score; + this.divisionID = divisionID; + this.seasonID = seasonID; } } @@ -36,12 +38,23 @@ async function remove(id) { return new Game(id, row[3], row[4], row[5], row[6], row[7]); } -async function retrieveByTeamDivisionAndSeason(teamID, divisionID, seasonID) { - const query = `SELECT * +async function retrieve(teamID, divisionID, seasonID) { + let table; + + if(teamID && divisionID && seasonID) { + const query = `SELECT game_id, division_id, season_id, game_date, team1_id, team2_id, team1_score, team2_score FROM scores.games WHERE (team1_id = $1 OR team2_id = $1) AND division_id = $2 AND season_id = $3 ORDER BY game_date DESC;`; - const table = (await database.executeQuery(query, [teamID,divisionID,seasonID])); + table = await database.executeQuery(query, [teamID,divisionID,seasonID]); + } + else { + const query = `SELECT game_id, division_id, season_id, game_date, team1_id, team2_id, team1_score, team2_score + FROM scores.games + ORDER BY game_date DESC;`; + table = await database.executeQuery(query); + } + const gamesList = []; table.forEach((row) => { @@ -50,7 +63,7 @@ async function retrieveByTeamDivisionAndSeason(teamID, divisionID, seasonID) { teamScore = opponentIsTeam2 ? row[6] : row[7]; opponentScore = opponentIsTeam2 ? row[7] : row[6]; - gamesList.push(new Game(row[0], row[3].toISOString().slice(0,10), teamID, opponentID, teamScore, opponentScore)); + gamesList.push(new Game(row[0], row[3].toISOString().slice(0,10), teamID, opponentID, teamScore, opponentScore, row[1], row[2])); }); return gamesList; } @@ -61,4 +74,4 @@ async function retrieveByTeamDivisionAndSeason(teamID, divisionID, seasonID) { exports.add = add; exports.remove = remove; -exports.retrieveByTeamDivisionAndSeason = retrieveByTeamDivisionAndSeason; \ No newline at end of file +exports.retrieve = retrieve; \ No newline at end of file diff --git a/public/scripts/data.js b/public/scripts/data.js index b83fdd0..9866321 100644 --- a/public/scripts/data.js +++ b/public/scripts/data.js @@ -47,8 +47,14 @@ export async function getTeamName(teamID) { return team.name; } -export async function getGames(teamID, divisionID, seasonID) { - const response = await fetch(`/data/games?team=${+teamID}&division=${+divisionID}&season=${+seasonID}`); +export async function getGames(teamID = undefined, divisionID = undefined, seasonID = undefined) { + let URL = '/data/games?'; + if(teamID) URL += `team=${+teamID}&`; + if(divisionID) URL += `division=${+divisionID}&`; + if(seasonID) URL += `season=${+seasonID}`; + + + const response = await fetch(URL); const gamesList = await response.json(); return gamesList; } \ No newline at end of file diff --git a/routes/data.js b/routes/data.js index f9c6431..76dd2ac 100644 --- a/routes/data.js +++ b/routes/data.js @@ -47,7 +47,7 @@ router.get('/team', function(req, res, next) { }) router.get('/games', function(req, res, next) { - games.retrieveByTeamDivisionAndSeason(req.query.team, req.query.division, req.query.season) + games.retrieve(req.query.team, req.query.division, req.query.season) .then(data => res.json(data)); })