Skip to content

Commit

Permalink
Retreiving Published Schedule Events Grouped By Season (#40)
Browse files Browse the repository at this point in the history
* Create a pull trequest for branch 36-retreive-published-schedule-events-by-season

* added season/year routes (untested)

* group by date instead of timestamp

* mapped season to month

* fixed mapping december

* added where clause

---------

Co-authored-by: Cheryl Chen <[email protected]>
Co-authored-by: Cheryl Chen <[email protected]>
Co-authored-by: Cheryl Chen <[email protected]>
Co-authored-by: michellelin1 <[email protected]>
  • Loading branch information
5 people authored Feb 5, 2024
1 parent 3198903 commit 9527087
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions routes/publishedSchedule.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,92 @@ publishedScheduleRouter.get('/', async (req, res) => {
}
});

// GET /published-schedule/season - returns rows that match the season
publishedScheduleRouter.get('/season', async (req, res) => {
try {
let startTime;
let endTime;

const { season, year } = req.query;

// getting the intervals for each season
if (season.toLowerCase() === 'winter') {
startTime = `${year - 1}-12-01`;
endTime = `${year}-02-29`;
} else if (season.toLowerCase() === 'spring') {
startTime = `${year}-03-01`;
endTime = `${year}-05-31`;
} else if (season.toLowerCase() === 'summer') {
startTime = `${year}-06-01`;
endTime = `${year}-08-31`;
} else {
startTime = `${year}-09-01`;
endTime = `${year}-11-30`;
}

const seasonResult = await db.query(
`
WITH seasonPS AS
(
SELECT
PS.id,
C.title,
C.event_type,
C.year,
PS.start_time,
PS.end_time,
PS.confirmed,
PS.confirmed_on,
PS.cohort,
PS.notes
FROM published_schedule PS
LEFT JOIN catalog C ON PS.event_id = C.id
WHERE
DATE(start_time) >= $1::date AND DATE(start_time) <= $2::date
)
SELECT DATE(seasonPS.start_time), JSON_AGG(seasonPS.*) AS data
FROM seasonPS
GROUP BY DATE(start_time)
ORDER BY DATE(start_time) ASC;
`,
[startTime, endTime],
);
res.status(200).json(keysToCamel(seasonResult));
} catch (err) {
res.status(400).send(err.message);
}
});

// GET /published-schedule/date - returns all events occurring on a specific date
publishedScheduleRouter.get('/date', async (req, res) => {
try {
const { date } = req.query;
const seasonResult = await db.query(
`
SELECT
PS.id,
C.title,
C.event_type,
C.year,
PS.start_time,
PS.end_time,
PS.confirmed,
PS.confirmed_on,
PS.cohort,
PS.notes
FROM published_schedule PS
LEFT JOIN catalog C ON PS.event_id = C.id
WHERE DATE(PS.start_time) = $1
ORDER BY start_time ASC;
`,
[date],
);
res.status(200).json(keysToCamel(seasonResult));
} catch (err) {
res.status(400).send(err.message);
}
});

// GET/:id - returns the rows that match the given id
publishedScheduleRouter.get('/:id', async (req, res) => {
try {
Expand Down

0 comments on commit 9527087

Please sign in to comment.