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
ORDER BY
    l.date DESC;