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;
