30 lines
682 B
Text
30 lines
682 B
Text
CREATE OR REPLACE VIEW optimized_links AS
|
|
SELECT
|
|
l.id,
|
|
l.title,
|
|
l.date,
|
|
l.description,
|
|
l.link,
|
|
a.mastodon,
|
|
a.name,
|
|
json_build_object('name', a.name, 'url', a.url, 'mastodon', a.mastodon) AS author,
|
|
'link' AS type,
|
|
(
|
|
SELECT array_agg(t.name)
|
|
FROM links_tags lt
|
|
LEFT JOIN tags t ON lt.tags_id = t.id
|
|
WHERE lt.links_id = l.id
|
|
) AS tags,
|
|
json_build_object(
|
|
'title', CONCAT(l.title, ' via ', a.name),
|
|
'url', l.link,
|
|
'description', l.description,
|
|
'date', l.date
|
|
) AS feed
|
|
FROM
|
|
links l
|
|
JOIN authors a ON l.author = a.id
|
|
GROUP BY
|
|
l.id, l.title, l.date, l.description, l.link, a.mastodon, a.name, a.url
|
|
ORDER BY
|
|
l.date DESC;
|