29 lines
1 KiB
Text
29 lines
1 KiB
Text
CREATE OR REPLACE VIEW optimized_albums AS
|
|
SELECT
|
|
al.name AS name,
|
|
al.release_year,
|
|
to_char(al.total_plays, 'FM999,999,999,999') AS total_plays,
|
|
al.total_plays AS total_plays_raw,
|
|
ar.name_string AS artist_name,
|
|
ar.slug AS artist_url,
|
|
CONCAT('/', df_album.filename_disk) AS image,
|
|
json_build_object(
|
|
'title', al.name,
|
|
'image', CONCAT('/', df_album.filename_disk),
|
|
'url', ar.slug,
|
|
'alt', CONCAT('Cover for ', al.name, ' by ', ar.name_string),
|
|
'subtext', CONCAT(to_char(al.total_plays, 'FM999,999,999,999'), ' plays')
|
|
) AS grid,
|
|
json_build_object(
|
|
'title', al.name,
|
|
'artist', ar.name_string,
|
|
'plays', to_char(al.total_plays, 'FM999,999,999,999'),
|
|
'image', CONCAT('/', df_album.filename_disk),
|
|
'url', ar.slug,
|
|
'year', al.release_year,
|
|
'alt', CONCAT('Cover for ', al.name, ' by ', ar.name_string)
|
|
) AS table
|
|
FROM albums al
|
|
LEFT JOIN artists ar ON al.artist = ar.id
|
|
LEFT JOIN directus_files df_album ON al.art = df_album.id
|
|
GROUP BY al.id, ar.name_string, ar.slug, df_album.filename_disk;
|