CREATE VIEW optimized_latest_listen AS
WITH latest_listen AS (
    SELECT
        l.track_name,
        l.artist_name,
        a.emoji AS artist_emoji,
        g.emoji AS genre_emoji,
        a.slug AS url,
        ROW_NUMBER() OVER (ORDER BY l.listened_at DESC) AS row_num
    FROM
        listens l
    JOIN artists a ON l.artist_name = a.name_string
    LEFT JOIN genres g ON a.genres = g.id
)
SELECT
    track_name,
    artist_name,
    artist_emoji,
    genre_emoji,
    url
FROM
    latest_listen
WHERE
    row_num = 1;