151 lines
3.3 KiB
SQL
151 lines
3.3 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
|
|
'page' AS type,
|
|
pa.permalink::TEXT AS url,
|
|
pa.title AS title,
|
|
pa.description AS description,
|
|
COALESCE(
|
|
NULLIF(pa.metadata ->> 'open_graph_image', ''),
|
|
(
|
|
SELECT
|
|
metadata ->> 'open_graph_image'
|
|
FROM
|
|
optimized_globals
|
|
LIMIT
|
|
1
|
|
)
|
|
) AS image_url,
|
|
NULL::timestamptz AS content_date
|
|
FROM
|
|
optimized_pages pa
|
|
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;
|