36 lines
No EOL
773 B
Text
36 lines
No EOL
773 B
Text
CREATE OR REPLACE VIEW optimized_concerts AS
|
|
SELECT
|
|
c.id,
|
|
c.date,
|
|
c.notes,
|
|
|
|
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; |