Skip to content

Commit

Permalink
TL Backend Fixes 2 (#70)
Browse files Browse the repository at this point in the history
* made ps.confirmed_on optional

* fixed season retrieval for stat modal

---------

Co-authored-by: michellelin1 <[email protected]>
  • Loading branch information
ThatMegamind and michellelin1 authored May 1, 2024
1 parent 05553e7 commit 45e19f6
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
18 changes: 17 additions & 1 deletion common/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,20 @@ const getSeasonFromMonthAndYear = (month, year) => {
return `Fall ${year}`;
};

module.exports = { keysToCamel, isInteger, calculateYear, getSeasonFromMonthAndYear };
const getMonthRangeFromSeason = (season) => {
if (season === 'spring') {
return [0, 4];
}
if (season === 'summer') {
return [5, 7];
}
return [8, 12];
};

module.exports = {
keysToCamel,
isInteger,
calculateYear,
getSeasonFromMonthAndYear,
getMonthRangeFromSeason,
};
21 changes: 14 additions & 7 deletions routes/publishedSchedule.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
const express = require('express');
const { db } = require('../server/db');
const { keysToCamel, calculateYear, getSeasonFromMonthAndYear } = require('../common/utils');
const {
keysToCamel,
calculateYear,
getSeasonFromMonthAndYear,
getMonthRangeFromSeason,
} = require('../common/utils');

const publishedScheduleRouter = express.Router();

Expand Down Expand Up @@ -51,7 +56,7 @@ publishedScheduleRouter.get('/recently-added', async (req, res) => {
PS.created_on
FROM published_schedule PS
LEFT JOIN catalog C ON PS.event_id = C.id
WHERE PS.created_on = PS.confirmed_on AND PS.created_on > current_date - 7 AND confirmed = true
WHERE PS.created_on > current_date - 7 AND confirmed = true
ORDER BY created_on DESC;
`,
);
Expand Down Expand Up @@ -221,6 +226,7 @@ publishedScheduleRouter.get('/season', async (req, res) => {
publishedScheduleRouter.get('/stats', async (req, res) => {
try {
const { season, year } = req.query;
const [monthStart, monthEnd] = getMonthRangeFromSeason(season);

const statResult = await db.query(
`
Expand All @@ -237,7 +243,7 @@ publishedScheduleRouter.get('/stats', async (req, res) => {
FROM all_event_types aet
CROSS JOIN all_subjects asu
)
SELECT
SELECT
COALESCE(ap.event_type::text, 'Total') AS event_type,
COALESCE(ap.subject::text, 'Total') AS subject,
COALESCE(COUNT(c.catalog_id), 0) AS total_count
Expand All @@ -249,16 +255,17 @@ publishedScheduleRouter.get('/stats', async (req, res) => {
FROM catalog c
JOIN published_schedule ps ON c.id = ps.event_id
JOIN day d ON PS.day_id = d.id
WHERE $1 = ANY(c.season)
AND EXTRACT(YEAR FROM d.event_date) = $2
WHERE EXTRACT(MONTH FROM d.event_date) >= $1
AND EXTRACT(MONTH FROM d.event_date) <= $2
AND EXTRACT(YEAR FROM d.event_date) = $3
) c ON ap.event_type = ANY(c.event_type) AND ap.subject = ANY(c.subject)
GROUP BY ROLLUP (ap.event_type), ROLLUP (ap.subject)
ORDER BY CASE WHEN ap.event_type IS NULL THEN 1 ELSE 0 END,
CASE WHEN ap.subject IS NULL THEN 1 ELSE 0 END,
ap.event_type NULLS FIRST,
ap.subject NULLS FIRST;
`,
[season, year],
[monthStart, monthEnd, year],
);

res.status(200).json(keysToCamel(statResult));
Expand Down Expand Up @@ -406,7 +413,7 @@ publishedScheduleRouter.post('/', async (req, res) => {
eventId,
dayId,
confirmed,
new Date(),
null,
startTime,
endTime,
calculateYear(eventDate, cohort),
Expand Down
4 changes: 2 additions & 2 deletions server/schema/published_schedule.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS published_schedule (
event_id integer NOT NULL,
day_id integer NOT NULL,
confirmed boolean NOT NULL,
confirmed_on date NOT NULL,
confirmed_on date,
start_time time NOT NULL,
end_time time NOT NULL,
cohort varchar[] NOT NULL,
Expand All @@ -16,4 +16,4 @@ CREATE TABLE IF NOT EXISTS published_schedule (
REFERENCES day (id) ON DELETE CASCADE
);

CREATE INDEX idx_day_id ON published_schedule (day_id);
CREATE INDEX idx_day_id ON published_schedule (day_id);

0 comments on commit 45e19f6

Please sign in to comment.