CREATE OR REPLACE VIEW optimized_concerts AS
SELECT
  c.id,
  c.date,
  CASE WHEN c.artist IS NOT NULL THEN
    json_build_object('name', a.name_string, 'url', a.slug)
  ELSE
    json_build_object('name', c.artist_name_string, 'url', NULL)
  END AS artist,
  json_build_object('name', v.name, 'name_short', trim(split_part(v.name, ',', 1)), 'latitude', v.latitude, 'longitude', v.longitude, 'notes', v.notes) AS venue,
  c.notes AS concert_notes
FROM
  concerts c
  LEFT JOIN artists a ON c.artist = a.id
  LEFT JOIN venues v ON c.venue = v.id
ORDER BY
  c.date DESC;
