From d95df47274aab09697c05108e129d2d824bbde35 Mon Sep 17 00:00:00 2001 From: Cory Dransfeldt Date: Sat, 10 May 2025 17:15:12 -0700 Subject: [PATCH] feat(scheduled_shows.sql): add air date to shows that haven't been started --- package-lock.json | 4 +- package.json | 2 +- queries/views/media/shows/scheduled_shows.sql | 69 ++++++++++++------- 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cd4ead..0876f18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "3.8.4", + "version": "3.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "3.8.4", + "version": "3.9.0", "license": "MIT", "dependencies": { "html-minifier-terser": "7.2.0", diff --git a/package.json b/package.json index de40494..a56b593 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "3.8.4", + "version": "3.9.0", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": { diff --git a/queries/views/media/shows/scheduled_shows.sql b/queries/views/media/shows/scheduled_shows.sql index f015bf8..f921241 100644 --- a/queries/views/media/shows/scheduled_shows.sql +++ b/queries/views/media/shows/scheduled_shows.sql @@ -25,18 +25,18 @@ SELECT json_build_object( THEN TO_CHAR(se.air_date, 'FMMM/FMDD/YY') ELSE TO_CHAR(se.air_date, 'FMMM/FMDD') END - ) - FROM scheduled_episodes se - WHERE se.show_id = s.id - AND se.status IN ('upcoming', 'aired') - AND NOT EXISTS ( - SELECT 1 FROM episodes e - WHERE e.show = s.id - AND e.season_number = se.season_number - AND e.episode_number = se.episode_number - ) - ORDER BY se.season_number ASC, se.episode_number ASC - LIMIT 1), + ) + FROM scheduled_episodes se + WHERE se.show_id = s.id + AND se.status IN ('upcoming', 'aired') + AND NOT EXISTS ( + SELECT 1 FROM episodes e + WHERE e.show = s.id + AND e.season_number = se.season_number + AND e.episode_number = se.episode_number + ) + ORDER BY se.season_number ASC, se.episode_number ASC + LIMIT 1), (SELECT CONCAT( 'S', e.season_number, 'E', e.episode_number, ' • ', CASE @@ -44,11 +44,11 @@ SELECT json_build_object( THEN TO_CHAR(e.last_watched_at, 'FMMM/FMDD/YY') ELSE TO_CHAR(e.last_watched_at, 'FMMM/FMDD') END - ) - FROM episodes e - WHERE e.show = s.id - ORDER BY e.last_watched_at DESC, e.season_number DESC, e.episode_number DESC - LIMIT 1), + ) + FROM episodes e + WHERE e.show = s.id + ORDER BY e.last_watched_at DESC, e.season_number DESC, e.episode_number DESC + LIMIT 1), s.year::text ) ) AS grid, @@ -59,10 +59,10 @@ SELECT json_build_object( WHERE se.show_id = s.id AND se.status IN ('upcoming', 'aired') AND NOT EXISTS ( - SELECT 1 FROM episodes e - WHERE e.show = s.id - AND e.season_number = se.season_number - AND e.episode_number = se.episode_number + SELECT 1 FROM episodes e + WHERE e.show = s.id + AND e.season_number = se.season_number + AND e.episode_number = se.episode_number ) ORDER BY se.season_number ASC, se.episode_number ASC LIMIT 1 @@ -73,10 +73,10 @@ SELECT json_build_object( WHERE se.show_id = s.id AND se.status IN ('upcoming', 'aired') AND NOT EXISTS ( - SELECT 1 FROM episodes e - WHERE e.show = s.id - AND e.season_number = se.season_number - AND e.episode_number = se.episode_number + SELECT 1 FROM episodes e + WHERE e.show = s.id + AND e.season_number = se.season_number + AND e.episode_number = se.episode_number ) ORDER BY se.season_number ASC, se.episode_number ASC LIMIT 1 @@ -122,7 +122,24 @@ SELECT json_build_object( 'backdrop', CONCAT('/', df_backdrop.filename_disk), 'url', s.slug, 'alt', CONCAT('Poster from ', s.title), - 'subtext', s.year::text + 'subtext', COALESCE( + ( + SELECT CONCAT( + 'S', se.season_number, 'E', se.episode_number, ' • ', + CASE + WHEN EXTRACT(YEAR FROM se.air_date) < EXTRACT(YEAR FROM CURRENT_DATE) + THEN TO_CHAR(se.air_date, 'FMMM/FMDD/YY') + ELSE TO_CHAR(se.air_date, 'FMMM/FMDD') + END + ) + FROM scheduled_episodes se + WHERE se.show_id = s.id + AND se.status IN ('upcoming', 'aired') + ORDER BY se.season_number ASC, se.episode_number ASC + LIMIT 1 + ), + s.year::text + ) ) AS grid FROM shows s LEFT JOIN directus_files df_art ON s.art = df_art.id