51 lines
760 B
SQL
51 lines
760 B
SQL
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;
|