chore(*.sql): use sql-formatter for sql formatting

This commit is contained in:
Cory Dransfeldt 2025-06-14 17:10:41 -07:00
parent cf1ee4c97f
commit 1d7f13d1f5
No known key found for this signature in database
63 changed files with 4432 additions and 2358 deletions

View file

@ -1,10 +1,14 @@
CREATE OR REPLACE VIEW optimized_last_watched_episodes AS
SELECT DISTINCT ON (e.show)
e.show AS show_id,
SELECT DISTINCT
ON (e.show) e.show AS show_id,
e.season_number,
e.episode_number,
e.last_watched_at,
CONCAT('S', e.season_number, 'E', e.episode_number) AS last_watched_episode
FROM episodes e
WHERE e.last_watched_at IS NOT NULL
ORDER BY e.show, e.last_watched_at DESC;
FROM
episodes e
WHERE
e.last_watched_at IS NOT NULL
ORDER BY
e.show,
e.last_watched_at DESC;

View file

@ -6,21 +6,38 @@ SELECT
se.status,
se.air_date,
(
SELECT CONCAT('S', se2.season_number, 'E', se2.episode_number)
FROM scheduled_episodes se2
WHERE se2.show_id = se.show_id
SELECT
CONCAT('S', se2.season_number, 'E', se2.episode_number)
FROM
scheduled_episodes se2
WHERE
se2.show_id = se.show_id
AND se2.status IN ('upcoming', 'aired')
ORDER BY se2.air_date ASC
LIMIT 1
ORDER BY
se2.air_date ASC
LIMIT
1
) AS next_scheduled_episode,
(
SELECT se2.air_date
FROM scheduled_episodes se2
WHERE se2.show_id = se.show_id
SELECT
se2.air_date
FROM
scheduled_episodes se2
WHERE
se2.show_id = se.show_id
AND se2.status IN ('upcoming', 'aired')
ORDER BY se2.air_date ASC
LIMIT 1
ORDER BY
se2.air_date ASC
LIMIT
1
) AS next_air_date
FROM scheduled_episodes se
WHERE se.status IN ('upcoming', 'aired')
GROUP BY se.show_id, se.season_number, se.episode_number, se.status, se.air_date;
FROM
scheduled_episodes se
WHERE
se.status IN ('upcoming', 'aired')
GROUP BY
se.show_id,
se.season_number,
se.episode_number,
se.status,
se.air_date;

View file

@ -1,207 +1,354 @@
CREATE OR REPLACE VIEW optimized_scheduled_shows AS
SELECT json_build_object(
'watching', (
SELECT json_agg(watching) FROM (
SELECT
json_build_object(
'watching',
(
SELECT
s.id,
s.tmdb_id,
s.title,
s.year,
s.ongoing,
s.slug AS url,
CONCAT(globals.cdn_url, '/', df_art.filename_disk) AS image,
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk) AS backdrop,
json_build_object(
'title', s.title,
'image', CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop', CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url', s.slug,
'alt', CONCAT('Poster from ', s.title),
'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')
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
json_agg(watching)
FROM
(
SELECT
s.id,
s.tmdb_id,
s.title,
s.year,
s.ongoing,
s.slug AS url,
CONCAT(globals.cdn_url, '/', df_art.filename_disk) AS image,
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk) AS backdrop,
json_build_object(
'title',
s.title,
'image',
CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop',
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url',
s.slug,
'alt',
CONCAT('Poster from ', s.title),
'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')
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
WHEN EXTRACT(
YEAR
FROM
e.last_watched_at
) < EXTRACT(
YEAR
FROM
CURRENT_DATE
) 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
),
s.year::text
)
ORDER BY se.season_number ASC, se.episode_number ASC
LIMIT 1),
(SELECT CONCAT(
'S', e.season_number, 'E', e.episode_number, '',
CASE
WHEN EXTRACT(YEAR FROM e.last_watched_at) < EXTRACT(YEAR FROM CURRENT_DATE)
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),
s.year::text
)
) AS grid,
json_build_object(
'title', CONCAT('Show • ', s.title, '', globals.site_name),
'description', LEFT(
regexp_replace(
regexp_replace(
regexp_replace(s.description, E'[*_`~#>-]', '', 'g'),
E'\\[(.*?)\\]\\((.*?)\\)', E'\\1', 'g'
) AS grid,
json_build_object(
'title',
CONCAT('Show • ', s.title, '', globals.site_name),
'description',
LEFT(
regexp_replace(
regexp_replace(
regexp_replace(s.description, E'[*_`~#>-]', '', 'g'),
E'\\[(.*?)\\]\\((.*?)\\)',
E'\\1',
'g'
),
E'!\\[(.*?)\\]\\((.*?)\\)',
'',
'g'
),
250
),
E'!\\[(.*?)\\]\\((.*?)\\)', '', 'g'
),
250
),
'open_graph_image', CASE
WHEN df_backdrop.filename_disk IS NOT NULL AND df_backdrop.filename_disk != '' AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
ELSE NULL
END,
'url', CONCAT(globals.url, s.slug),
'type', 'scheduled_show'
) AS metadata,
CASE
WHEN (
SELECT se.air_date
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
'open_graph_image',
CASE
WHEN df_backdrop.filename_disk IS NOT NULL
AND df_backdrop.filename_disk != ''
AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
ELSE NULL
END,
'url',
CONCAT(globals.url, s.slug),
'type',
'scheduled_show'
) AS metadata,
CASE
WHEN (
SELECT
se.air_date
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
) >= NOW() THEN (
SELECT
se.air_date::timestamp
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
)
ORDER BY se.season_number ASC, se.episode_number ASC
LIMIT 1
) >= NOW()
THEN (
SELECT se.air_date::timestamp
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
ELSE (
SELECT
MIN(e.last_watched_at)::timestamp
FROM
episodes e
WHERE
e.show = s.id
)
ORDER BY se.season_number ASC, se.episode_number ASC
LIMIT 1
)
ELSE (
SELECT MIN(e.last_watched_at)::timestamp
FROM episodes e
WHERE e.show = s.id
)
END AS sort_date
FROM shows s
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
WHERE s.ongoing = true
AND EXISTS (
SELECT 1
FROM scheduled_episodes se
WHERE se.show_id = s.id
AND se.status IN ('upcoming', 'aired')
)
AND EXISTS (
SELECT 1
FROM episodes e
WHERE e.show = s.id
)
ORDER BY sort_date ASC NULLS LAST, s.title ASC NULLS LAST
) watching
),
'unstarted', (
SELECT json_agg(unstarted) FROM (
SELECT
s.id,
s.tmdb_id,
s.title,
s.year,
s.ongoing,
s.slug AS url,
CONCAT(globals.cdn_url, '/', df_art.filename_disk) AS image,
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk) AS backdrop,
json_build_object(
'title', s.title,
'image', CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop', CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url', s.slug,
'alt', CONCAT('Poster from ', s.title),
'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
END AS sort_date
FROM
shows s
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
WHERE
s.ongoing = true
AND EXISTS (
SELECT
1
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,
json_build_object(
'title', CONCAT('Show • ', s.title, '', globals.site_name),
'description', LEFT(
regexp_replace(
regexp_replace(
regexp_replace(s.description, E'[*_`~#>-]', '', 'g'),
E'\\[(.*?)\\]\\((.*?)\\)', E'\\1', 'g'
)
AND EXISTS (
SELECT
1
FROM
episodes e
WHERE
e.show = s.id
)
ORDER BY
sort_date ASC NULLS LAST,
s.title ASC NULLS LAST
) watching
),
'unstarted',
(
SELECT
json_agg(unstarted)
FROM
(
SELECT
s.id,
s.tmdb_id,
s.title,
s.year,
s.ongoing,
s.slug AS url,
CONCAT(globals.cdn_url, '/', df_art.filename_disk) AS image,
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk) AS backdrop,
json_build_object(
'title',
s.title,
'image',
CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop',
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url',
s.slug,
'alt',
CONCAT('Poster from ', s.title),
'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,
json_build_object(
'title',
CONCAT('Show • ', s.title, '', globals.site_name),
'description',
LEFT(
regexp_replace(
regexp_replace(
regexp_replace(s.description, E'[*_`~#>-]', '', 'g'),
E'\\[(.*?)\\]\\((.*?)\\)',
E'\\1',
'g'
),
E'!\\[(.*?)\\]\\((.*?)\\)',
'',
'g'
),
250
),
E'!\\[(.*?)\\]\\((.*?)\\)', '', 'g'
),
250
),
'open_graph_image', CASE
WHEN df_backdrop.filename_disk IS NOT NULL AND df_backdrop.filename_disk != '' AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
ELSE NULL
END,
'url', CONCAT(globals.url, s.slug),
'type', 'scheduled_show'
) AS metadata
FROM shows s
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
WHERE s.ongoing = true
AND EXISTS (
SELECT 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
)
ORDER BY (
SELECT MIN(se.air_date)
FROM scheduled_episodes se
WHERE se.show_id = s.id
AND se.status IN ('upcoming', 'aired')
) ASC NULLS LAST
) unstarted
)
) AS scheduled_shows
'open_graph_image',
CASE
WHEN df_backdrop.filename_disk IS NOT NULL
AND df_backdrop.filename_disk != ''
AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
ELSE NULL
END,
'url',
CONCAT(globals.url, s.slug),
'type',
'scheduled_show'
) AS metadata
FROM
shows s
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
WHERE
s.ongoing = true
AND EXISTS (
SELECT
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
)
ORDER BY
(
SELECT
MIN(se.air_date)
FROM
scheduled_episodes se
WHERE
se.show_id = s.id
AND se.status IN ('upcoming', 'aired')
) ASC NULLS LAST
) unstarted
)
) AS scheduled_shows

View file

@ -13,194 +13,355 @@ SELECT
CONCAT(globals.cdn_url, '/', df_art.filename_disk) AS image,
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk) AS backdrop,
json_build_object(
'title', NULL,
'image', CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop', CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url', s.slug,
'alt', CONCAT('Artwork for ', s.title),
'subtext', CASE
'title',
NULL,
'image',
CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop',
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'url',
s.slug,
'alt',
CONCAT('Artwork for ', s.title),
'subtext',
CASE
WHEN (
SELECT MAX(e1.last_watched_at)
FROM episodes e1
WHERE e1.show = s.id
) >= NOW() - INTERVAL '90 days' THEN
(SELECT CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM episodes e2
WHERE e2.show = s.id
ORDER BY e2.last_watched_at DESC, e2.season_number DESC, e2.episode_number DESC
LIMIT 1)
SELECT
MAX(e1.last_watched_at)
FROM
episodes e1
WHERE
e1.show = s.id
) >= NOW() - INTERVAL '90 days' THEN (
SELECT
CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM
episodes e2
WHERE
e2.show = s.id
ORDER BY
e2.last_watched_at DESC,
e2.season_number DESC,
e2.episode_number DESC
LIMIT
1
)
ELSE s.year::text
END,
'type', 'tv'
'type',
'tv'
) AS grid,
json_build_object(
'title', s.title,
'year', s.year,
'url', s.slug,
'image', CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop', CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'formatted_episode', COALESCE((
SELECT CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM episodes e2
WHERE e2.show = s.id
ORDER BY e2.last_watched_at DESC, e2.season_number DESC, e2.episode_number DESC
LIMIT 1
), NULL),
'last_watched_at', (
SELECT MAX(e3.last_watched_at)
FROM episodes e3
WHERE e3.show = s.id
'title',
s.title,
'year',
s.year,
'url',
s.slug,
'image',
CONCAT(globals.cdn_url, '/', df_art.filename_disk),
'backdrop',
CONCAT(globals.cdn_url, '/', df_backdrop.filename_disk),
'formatted_episode',
COALESCE(
(
SELECT
CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM
episodes e2
WHERE
e2.show = s.id
ORDER BY
e2.last_watched_at DESC,
e2.season_number DESC,
e2.episode_number DESC
LIMIT
1
),
NULL
),
'last_watched_at',
(
SELECT
MAX(e3.last_watched_at)
FROM
episodes e3
WHERE
e3.show = s.id
)
) AS episode,
(
SELECT json_agg(
json_build_object(
'title', m.title,
'year', m.year,
'url', m.slug,
'image', CONCAT(globals.cdn_url, '/', df_movie.filename_disk),
'grid', json_build_object(
'title', NULL,
'image', CONCAT(globals.cdn_url, '/', df_movie.filename_disk),
'alt', CONCAT('Poster for ', m.title, ' (', m.year, ')'),
'subtext', CASE WHEN m.star_rating IS NOT NULL THEN m.star_rating::text ELSE m.year::text END,
'url', m.slug
),
'type', 'movies'
SELECT
json_agg(
json_build_object(
'title',
m.title,
'year',
m.year,
'url',
m.slug,
'image',
CONCAT(globals.cdn_url, '/', df_movie.filename_disk),
'grid',
json_build_object(
'title',
NULL,
'image',
CONCAT(globals.cdn_url, '/', df_movie.filename_disk),
'alt',
CONCAT('Poster for ', m.title, ' (', m.year, ')'),
'subtext',
CASE
WHEN m.star_rating IS NOT NULL THEN m.star_rating::text
ELSE m.year::text
END,
'url',
m.slug
),
'type',
'movies'
)
ORDER BY
m.year ASC
)
ORDER BY m.year ASC
)
FROM shows_movies sm
LEFT JOIN movies m ON sm.movies_id = m.id
LEFT JOIN directus_files df_movie ON m.art = df_movie.id
WHERE sm.shows_id = s.id AND m.last_watched IS NOT NULL
FROM
shows_movies sm
LEFT JOIN movies m ON sm.movies_id = m.id
LEFT JOIN directus_files df_movie ON m.art = df_movie.id
WHERE
sm.shows_id = s.id
AND m.last_watched IS NOT NULL
) AS movies,
(
SELECT json_agg(
json_build_object(
'title', b.title,
'author', b.author,
'url', b.slug,
'image', CONCAT(globals.cdn_url, '/', df_book.filename_disk),
'grid', json_build_object(
'title', NULL,
'image', CONCAT(globals.cdn_url, '/', df_book.filename_disk),
'alt', CONCAT('Cover for ', b.title, ' by ', b.author),
'subtext', CASE WHEN b.star_rating IS NOT NULL THEN b.star_rating ELSE NULL END,
'url', b.slug
),
'type', 'books'
SELECT
json_agg(
json_build_object(
'title',
b.title,
'author',
b.author,
'url',
b.slug,
'image',
CONCAT(globals.cdn_url, '/', df_book.filename_disk),
'grid',
json_build_object(
'title',
NULL,
'image',
CONCAT(globals.cdn_url, '/', df_book.filename_disk),
'alt',
CONCAT('Cover for ', b.title, ' by ', b.author),
'subtext',
CASE
WHEN b.star_rating IS NOT NULL THEN b.star_rating
ELSE NULL
END,
'url',
b.slug
),
'type',
'books'
)
ORDER BY
b.title
)
ORDER BY b.title
)
FROM shows_books sb
LEFT JOIN books b ON sb.books_id = b.id
LEFT JOIN directus_files df_book ON b.art = df_book.id
WHERE sb.shows_id = s.id AND LOWER(b.read_status) = 'finished'
FROM
shows_books sb
LEFT JOIN books b ON sb.books_id = b.id
LEFT JOIN directus_files df_book ON b.art = df_book.id
WHERE
sb.shows_id = s.id
AND LOWER(b.read_status) = 'finished'
) AS books,
(
SELECT json_agg(json_build_object('title', p.title, 'date', p.date, 'url', p.slug) ORDER BY p.date DESC)
FROM posts_shows ps
LEFT JOIN posts p ON ps.posts_id = p.id
WHERE ps.shows_id = s.id
SELECT
json_agg(
json_build_object('title', p.title, 'date', p.date, 'url', p.slug)
ORDER BY
p.date DESC
)
FROM
posts_shows ps
LEFT JOIN posts p ON ps.posts_id = p.id
WHERE
ps.shows_id = s.id
) AS posts,
(
SELECT array_agg(t.name)
FROM shows_tags st
LEFT JOIN tags t ON st.tags_id = t.id
WHERE st.shows_id = s.id
SELECT
array_agg(t.name)
FROM
shows_tags st
LEFT JOIN tags t ON st.tags_id = t.id
WHERE
st.shows_id = s.id
) AS tags,
(
SELECT json_agg(
json_build_object(
'title', rs.title,
'year', rs.year,
'url', rs.slug,
'image', CONCAT(globals.cdn_url, '/', df_related.filename_disk),
'grid', json_build_object(
'title', NULL,
'image', CONCAT(globals.cdn_url, '/', df_related.filename_disk),
'alt', CONCAT('Artwork for ', rs.title),
'subtext', CASE
WHEN (
SELECT MAX(e1.last_watched_at)
FROM episodes e1
WHERE e1.show = rs.id
) >= NOW() - INTERVAL '90 days' THEN
(
SELECT CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM episodes e2
WHERE e2.show = rs.id
ORDER BY e2.last_watched_at DESC, e2.season_number DESC, e2.episode_number DESC
LIMIT 1
SELECT
json_agg(
json_build_object(
'title',
rs.title,
'year',
rs.year,
'url',
rs.slug,
'image',
CONCAT(globals.cdn_url, '/', df_related.filename_disk),
'grid',
json_build_object(
'title',
NULL,
'image',
CONCAT(globals.cdn_url, '/', df_related.filename_disk),
'alt',
CONCAT('Artwork for ', rs.title),
'subtext',
CASE
WHEN (
SELECT
MAX(e1.last_watched_at)
FROM
episodes e1
WHERE
e1.show = rs.id
) >= NOW() - INTERVAL '90 days' THEN (
SELECT
CONCAT('S', e2.season_number, 'E', e2.episode_number)
FROM
episodes e2
WHERE
e2.show = rs.id
ORDER BY
e2.last_watched_at DESC,
e2.season_number DESC,
e2.episode_number DESC
LIMIT
1
)
ELSE rs.year::text
END,
'url', rs.slug
),
'type', 'tv'
ELSE rs.year::text
END,
'url',
rs.slug
),
'type',
'tv'
)
ORDER BY
rs.year ASC
)
ORDER BY rs.year ASC
)
FROM related_shows sr
LEFT JOIN shows rs ON sr.related_shows_id = rs.id
LEFT JOIN directus_files df_related ON rs.art = df_related.id
WHERE sr.shows_id = s.id
FROM
related_shows sr
LEFT JOIN shows rs ON sr.related_shows_id = rs.id
LEFT JOIN directus_files df_related ON rs.art = df_related.id
WHERE
sr.shows_id = s.id
AND EXISTS (
SELECT 1
FROM episodes e
WHERE e.show = rs.id
SELECT
1
FROM
episodes e
WHERE
e.show = rs.id
AND e.last_watched_at IS NOT NULL
)
) AS related_shows,
(
SELECT json_agg(
json_build_object(
'name', a.name_string,
'url', a.slug,
'country', a.country,
'total_plays', a.total_plays,
'image', CONCAT(globals.cdn_url, '/', df_artist.filename_disk),
'grid', json_build_object(
'title', a.name_string,
'image', CONCAT(globals.cdn_url, '/', df_artist.filename_disk),
'alt', CASE WHEN a.total_plays > 0 THEN CONCAT(to_char(a.total_plays, 'FM999,999,999,999'), ' plays of ', a.name_string) ELSE CONCAT('Artwork of ', a.name_string) END,
'subtext', CASE WHEN a.total_plays > 0 THEN CONCAT(to_char(a.total_plays, 'FM999,999,999,999'), ' plays') ELSE NULL END,
'url', a.slug
),
'type', 'music'
SELECT
json_agg(
json_build_object(
'name',
a.name_string,
'url',
a.slug,
'country',
a.country,
'total_plays',
a.total_plays,
'image',
CONCAT(globals.cdn_url, '/', df_artist.filename_disk),
'grid',
json_build_object(
'title',
a.name_string,
'image',
CONCAT(globals.cdn_url, '/', df_artist.filename_disk),
'alt',
CASE
WHEN a.total_plays > 0 THEN CONCAT(
to_char(a.total_plays, 'FM999,999,999,999'),
' plays of ',
a.name_string
)
ELSE CONCAT('Artwork of ', a.name_string)
END,
'subtext',
CASE
WHEN a.total_plays > 0 THEN CONCAT(
to_char(a.total_plays, 'FM999,999,999,999'),
' plays'
)
ELSE NULL
END,
'url',
a.slug
),
'type',
'music'
)
ORDER BY
a.total_plays DESC
)
ORDER BY a.total_plays DESC
)
FROM shows_artists sa
LEFT JOIN artists a ON sa.artists_id = a.id
LEFT JOIN directus_files df_artist ON a.art = df_artist.id
WHERE sa.shows_id = s.id
FROM
shows_artists sa
LEFT JOIN artists a ON sa.artists_id = a.id
LEFT JOIN directus_files df_artist ON a.art = df_artist.id
WHERE
sa.shows_id = s.id
) AS artists,
MAX(e.last_watched_at) AS last_watched_at,
json_build_object(
'title', CONCAT('Show • ', s.title, '', globals.site_name),
'description', LEFT(
'title',
CONCAT('Show • ', s.title, '', globals.site_name),
'description',
LEFT(
regexp_replace(
regexp_replace(
regexp_replace(s.description, E'[*_`~#>-]', '', 'g'),
E'\\[(.*?)\\]\\((.*?)\\)', E'\\1', 'g'
E'\\[(.*?)\\]\\((.*?)\\)',
E'\\1',
'g'
),
E'!\\[(.*?)\\]\\((.*?)\\)', '', 'g'
E'!\\[(.*?)\\]\\((.*?)\\)',
'',
'g'
),
250
),
'open_graph_image', CASE
WHEN df_backdrop.filename_disk IS NOT NULL AND df_backdrop.filename_disk != '' AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
'open_graph_image',
CASE
WHEN df_backdrop.filename_disk IS NOT NULL
AND df_backdrop.filename_disk != ''
AND df_backdrop.filename_disk != '/' THEN CONCAT('/', df_backdrop.filename_disk)
ELSE NULL
END,
'url', CONCAT(globals.url, s.slug),
'type', 'show'
'url',
CONCAT(globals.url, s.slug),
'type',
'show'
) AS metadata
FROM shows s
LEFT JOIN episodes e ON s.id = e.show
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
GROUP BY s.id, df_art.filename_disk, df_backdrop.filename_disk, globals.cdn_url, globals.site_name, globals.url
ORDER BY MAX(e.last_watched_at) DESC;
FROM
shows s
LEFT JOIN episodes e ON s.id = e.show
LEFT JOIN directus_files df_art ON s.art = df_art.id
LEFT JOIN directus_files df_backdrop ON s.backdrop = df_backdrop.id
CROSS JOIN optimized_globals globals
GROUP BY
s.id,
df_art.filename_disk,
df_backdrop.filename_disk,
globals.cdn_url,
globals.site_name,
globals.url
ORDER BY
MAX(e.last_watched_at) DESC;