61 lines
2 KiB
SQL
61 lines
2 KiB
SQL
CREATE OR REPLACE VIEW optimized_oembed AS
|
|
WITH oembed_data AS (
|
|
SELECT
|
|
'post' AS type,
|
|
p.url::TEXT AS url,
|
|
p.title AS title,
|
|
p.description AS description,
|
|
COALESCE(NULLIF(p.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
p.date AS content_date
|
|
FROM optimized_posts p
|
|
UNION ALL
|
|
SELECT
|
|
'book' AS type,
|
|
b.url::TEXT AS url,
|
|
b.title AS title,
|
|
b.description AS description,
|
|
COALESCE(NULLIF(b.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
b.date_finished AS content_date
|
|
FROM optimized_books b
|
|
UNION ALL
|
|
SELECT
|
|
'artist' AS type,
|
|
ar.url::TEXT AS url,
|
|
ar.name AS title,
|
|
ar.description AS description,
|
|
COALESCE(NULLIF(ar.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
CURRENT_TIMESTAMP AS content_date
|
|
FROM optimized_artists ar
|
|
UNION ALL
|
|
SELECT
|
|
'genre' AS type,
|
|
g.url::TEXT AS url,
|
|
g.name AS title,
|
|
g.description AS description,
|
|
COALESCE(NULLIF(g.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
CURRENT_TIMESTAMP AS content_date
|
|
FROM optimized_genres g
|
|
UNION ALL
|
|
SELECT
|
|
'show' AS type,
|
|
s.url::TEXT AS url,
|
|
s.title AS title,
|
|
s.description AS description,
|
|
COALESCE(NULLIF(s.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
s.last_watched_at AS content_date
|
|
FROM optimized_shows s
|
|
UNION ALL
|
|
SELECT
|
|
'movie' AS type,
|
|
m.url::TEXT AS url,
|
|
m.title AS title,
|
|
m.description AS description,
|
|
COALESCE(NULLIF(m.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url,
|
|
m.last_watched AS content_date
|
|
FROM optimized_movies m
|
|
)
|
|
SELECT
|
|
ROW_NUMBER() OVER (ORDER BY url) AS id,
|
|
*
|
|
FROM
|
|
oembed_data;
|