feat: dynamic pages to sitemap

This commit is contained in:
Cory Dransfeldt 2024-11-25 08:37:22 -08:00
parent b208b20186
commit 308562dc7a
No known key found for this signature in database
9 changed files with 10064 additions and 67 deletions

View file

@ -23,49 +23,57 @@ WITH feed_data AS (
json_build_object('title', CONCAT(l.title, ' via ', l.name), 'url', l.link, 'description', l.description, 'date', l.date) AS feed
FROM
optimized_links l
UNION ALL
SELECT
b.date_finished AS content_date,
b.title,
b.description,
CONCAT('https://coryd.dev', b.url) AS url,
b.image,
b.rating,
b.tags,
CASE WHEN LOWER(b.status) = 'finished' THEN
json_build_object('title', b.title, 'url', CONCAT('https://coryd.dev', b.url), 'description', CASE WHEN b.review IS NOT NULL THEN
b.review
ELSE
b.description
END, 'image', b.image, 'rating', b.rating, 'date', b.date_finished)
ELSE
NULL
END AS feed
FROM
optimized_books b
UNION ALL
SELECT
m.last_watched AS content_date,
m.title,
m.description,
CONCAT('https://coryd.dev', m.url) AS url,
m.image,
m.rating,
m.tags,
CASE WHEN m.last_watched IS NOT NULL THEN
json_build_object('title', m.title, 'url', CONCAT('https://coryd.dev', m.url), 'description', CASE WHEN m.review IS NOT NULL THEN
m.review
ELSE
m.description
END, 'image', m.backdrop, 'rating', m.rating, 'date', m.last_watched)
ELSE
NULL
END AS feed
FROM
optimized_movies m
UNION ALL
SELECT
b.date_finished AS content_date,
b.title,
b.description,
CONCAT('https://coryd.dev', b.url) AS url,
b.image,
b.rating,
b.tags,
CASE WHEN LOWER(b.status) = 'finished' THEN
json_build_object('title', CONCAT(b.title, ' by ', b.author, CASE WHEN b.rating IS NOT NULL THEN
CONCAT(' (', b.rating, ')')
ELSE
''
END), 'url', CONCAT('https://coryd.dev', b.url), 'description', CASE WHEN b.review IS NOT NULL THEN
b.review
ELSE
b.description
END, 'image', b.image, 'rating', b.rating, 'date', b.date_finished)
ELSE
NULL
END AS feed
FROM
optimized_books b
UNION ALL
SELECT
m.last_watched AS content_date,
m.title,
m.description,
CONCAT('https://coryd.dev', m.url) AS url,
m.image,
m.rating,
m.tags,
CASE WHEN m.last_watched IS NOT NULL THEN
json_build_object('title', CONCAT(m.title, CASE WHEN m.rating IS NOT NULL THEN
CONCAT(' (', m.rating, ')')
ELSE
''
END), 'url', CONCAT('https://coryd.dev', m.url), 'description', CASE WHEN m.review IS NOT NULL THEN
m.review
ELSE
m.description
END, 'image', m.backdrop, 'rating', m.rating, 'date', m.last_watched)
ELSE
NULL
END AS feed
FROM
optimized_movies m
)
SELECT
json_agg(feed_data.* ORDER BY feed_data.content_date DESC) AS feed
json_agg(feed.* ORDER BY feed.content_date DESC) AS feed
FROM (
SELECT
*
@ -75,5 +83,5 @@ FROM (
feed IS NOT NULL
ORDER BY
content_date DESC
LIMIT 20) AS feed_data;
LIMIT 20) AS feed;