diff --git a/package-lock.json b/package-lock.json index d2228e3..e7eb86a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "7.0.1", + "version": "7.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "7.0.1", + "version": "7.0.2", "license": "MIT", "dependencies": { "minisearch": "^7.1.2", diff --git a/package.json b/package.json index 590e7c9..27dbf26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "7.0.1", + "version": "7.0.2", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": { diff --git a/queries/views/content/posts.sql b/queries/views/content/posts.sql index 01f97f0..1269cd0 100644 --- a/queries/views/content/posts.sql +++ b/queries/views/content/posts.sql @@ -65,13 +65,12 @@ SELECT 'url', a.slug ), 'type', 'music' - ) ORDER BY a.name_string ASC) + ) ORDER BY a.total_plays DESC) FROM posts_artists pa LEFT JOIN artists a ON pa.artists_id = a.id LEFT JOIN directus_files df_artist ON a.art = df_artist.id WHERE pa.posts_id = p.id ) AS artists, - ( SELECT json_agg(json_build_object( 'title', b.title, @@ -106,7 +105,7 @@ SELECT 'url', m.slug ), 'type', 'movies' - ) ORDER BY m.year DESC) + ) ORDER BY m.year ASC) FROM posts_movies pm LEFT JOIN movies m ON pm.movies_id = m.id LEFT JOIN directus_files df_movie ON m.art = df_movie.id @@ -126,7 +125,7 @@ SELECT 'url', s.slug ), 'type', 'tv' - ) ORDER BY s.year DESC) + ) ORDER BY s.year ASC) FROM posts_shows ps LEFT JOIN shows s ON ps.shows_id = s.id LEFT JOIN directus_files df_show ON s.art = df_show.id diff --git a/queries/views/media/books.sql b/queries/views/media/books.sql index 1130d1c..f567b52 100644 --- a/queries/views/media/books.sql +++ b/queries/views/media/books.sql @@ -39,7 +39,7 @@ SELECT ), 'type', 'music' ) - ORDER BY a.name_string ASC + ORDER BY a.total_plays DESC ) FROM books_artists ba LEFT JOIN artists a ON ba.artists_id = a.id @@ -62,7 +62,7 @@ SELECT ), 'type', 'movies' ) - ORDER BY m.year DESC + ORDER BY m.year ASC ) FROM movies_books mb LEFT JOIN movies m ON mb.movies_id = m.id @@ -94,7 +94,7 @@ SELECT ), 'type', 'tv' ) - ORDER BY s.year DESC + ORDER BY s.year ASC ) FROM shows_books sb LEFT JOIN shows s ON sb.shows_id = s.id diff --git a/queries/views/media/movies.sql b/queries/views/media/movies.sql index aeeed57..b408f59 100644 --- a/queries/views/media/movies.sql +++ b/queries/views/media/movies.sql @@ -59,7 +59,7 @@ SELECT ), 'type', 'music' ) - ORDER BY a.name_string + ORDER BY a.total_plays DESC ) FROM movies_artists ma LEFT JOIN artists a ON ma.artists_id = a.id @@ -105,7 +105,7 @@ SELECT ), 'type', 'tv' ) - ORDER BY s.year DESC + ORDER BY s.year ASC ) FROM shows_movies sm LEFT JOIN shows s ON sm.shows_id = s.id @@ -135,7 +135,7 @@ SELECT ), 'type', 'movies' ) - ORDER BY rm.year DESC + ORDER BY rm.year ASC ) FROM related_movies r LEFT JOIN movies rm ON r.related_movies_id = rm.id diff --git a/queries/views/media/music/artists.sql b/queries/views/media/music/artists.sql index ddea6a4..3649da7 100644 --- a/queries/views/media/music/artists.sql +++ b/queries/views/media/music/artists.sql @@ -113,7 +113,7 @@ SELECT ), 'type', 'movies' ) - ORDER BY m.year DESC + ORDER BY m.year ASC ) FROM movies_artists ma LEFT JOIN movies m ON ma.movies_id = m.id @@ -136,7 +136,7 @@ SELECT ), 'type', 'tv' ) - ORDER BY s.year DESC + ORDER BY s.year ASC ) FROM shows_artists sa LEFT JOIN shows s ON sa.shows_id = s.id @@ -164,7 +164,7 @@ SELECT ), 'type', 'music' ) - ORDER BY related_ar.name_string + ORDER BY related_ar.total_plays DESC ) FROM related_artists ra LEFT JOIN artists related_ar ON ra.related_artists_id = related_ar.id diff --git a/queries/views/media/music/genres.sql b/queries/views/media/music/genres.sql index 7709a84..8d16935 100644 --- a/queries/views/media/music/genres.sql +++ b/queries/views/media/music/genres.sql @@ -7,44 +7,96 @@ SELECT to_char(g.total_plays, 'FM999,999,999,999') AS total_plays, g.wiki_link, g.slug AS url, -( - SELECT - json_agg(json_build_object('name', a.name_string, 'url', a.slug, 'image', CONCAT('/', df_artist.filename_disk), 'total_plays', to_char(a.total_plays, 'FM999,999,999,999')) - ORDER BY a.total_plays DESC) - FROM - artists a + ( + SELECT json_agg( + json_build_object( + 'name', a.name_string, + 'url', a.slug, + 'image', CONCAT(globals.cdn_url, '/', df_artist.filename_disk), + 'total_plays', to_char(a.total_plays, 'FM999,999,999,999'), + 'grid', json_build_object( + 'title', a.name_string, + 'image', CONCAT(globals.cdn_url, '/', df_artist.filename_disk), + 'alt', CONCAT(to_char(a.total_plays, 'FM999,999,999,999'), ' plays of ', a.name_string), + 'subtext', CONCAT(to_char(a.total_plays, 'FM999,999,999,999'), ' plays'), + 'url', a.slug + ), + 'type', 'music' + ) + ORDER BY a.total_plays DESC + ) + FROM artists a LEFT JOIN directus_files df_artist ON a.art = df_artist.id - WHERE - a.genres = g.id) AS artists, -( - SELECT - json_agg(json_build_object('title', b.title, 'author', b.author, 'url', b.slug) - ORDER BY b.title ASC) - FROM - books b - JOIN genres_books gb ON gb.books_id = b.id - WHERE - gb.genres_id = g.id) AS books, -( - SELECT - json_agg(json_build_object('title', m.title, 'year', m.year, 'url', m.slug) - ORDER BY m.year DESC) - FROM - movies m - JOIN genres_movies gm ON gm.movies_id = m.id - WHERE - gm.genres_id = g.id) AS movies, -( - SELECT - json_agg(json_build_object('title', p.title, 'date', p.date, 'url', p.slug) - ORDER BY p.date DESC) - FROM - posts_genres pg - LEFT JOIN posts p ON pg.posts_id = p.id - WHERE - pg.genres_id = g.id) AS posts - FROM - genres g - ORDER BY - g.id ASC; - + WHERE a.genres = g.id + ) AS artists, + ( + SELECT json_agg( + json_build_object( + 'title', b.title, + 'author', b.author, + 'url', b.slug, + 'image', CONCAT(globals.cdn_url, '/', df_book.filename_disk), + 'grid', json_build_object( + 'title', b.title, + 'image', CONCAT(globals.cdn_url, '/', df_book.filename_disk), + 'alt', CONCAT('Cover for ', b.title, ' by ', b.author), + 'subtext', b.author, + 'url', b.slug + ), + 'type', 'books' + ) + ORDER BY b.title ASC + ) + FROM books b + JOIN genres_books gb ON gb.books_id = b.id + LEFT JOIN directus_files df_book ON b.art = df_book.id + WHERE gb.genres_id = g.id + ) AS books, + ( + SELECT json_agg( + json_build_object( + 'title', m.title, + 'year', m.year, + 'url', m.slug, + 'image', CONCAT(globals.cdn_url, '/', df_movie.filename_disk), + 'grid', json_build_object( + 'title', m.title, + 'image', CONCAT(globals.cdn_url, '/', df_movie.filename_disk), + 'alt', CONCAT('Poster for ', m.title), + 'subtext', m.year, + 'url', m.slug + ), + 'type', 'movies' + ) + ORDER BY m.year ASC + ) + FROM movies m + JOIN genres_movies gm ON gm.movies_id = m.id + LEFT JOIN directus_files df_movie ON m.art = df_movie.id + WHERE gm.genres_id = g.id + ) AS movies, + ( + SELECT json_agg( + json_build_object( + 'title', p.title, + 'date', p.date, + 'url', p.slug, + 'grid', json_build_object( + 'title', p.title, + 'image', CONCAT(globals.cdn_url, '/', df_post.filename_disk), + 'alt', p.title, + 'subtext', TO_CHAR(p.date, 'FMMonth DD, YYYY'), + 'url', p.slug + ), + 'type', 'posts' + ) + ORDER BY p.date DESC + ) + FROM posts_genres pg + LEFT JOIN posts p ON pg.posts_id = p.id + LEFT JOIN directus_files df_post ON p.image = df_post.id + WHERE pg.genres_id = g.id + ) AS posts +FROM genres g +CROSS JOIN optimized_globals globals +ORDER BY g.id ASC; diff --git a/queries/views/media/shows/shows.sql b/queries/views/media/shows/shows.sql index 1fe8e31..b4de9da 100644 --- a/queries/views/media/shows/shows.sql +++ b/queries/views/media/shows/shows.sql @@ -69,7 +69,7 @@ SELECT ), 'type', 'movies' ) - ORDER BY m.year DESC + ORDER BY m.year ASC ) FROM shows_movies sm LEFT JOIN movies m ON sm.movies_id = m.id @@ -128,7 +128,7 @@ SELECT ), 'type', 'tv' ) - ORDER BY rs.year DESC + ORDER BY rs.year ASC ) FROM related_shows sr LEFT JOIN shows rs ON sr.related_shows_id = rs.id @@ -155,7 +155,7 @@ SELECT ), 'type', 'music' ) - ORDER BY a.name_string + ORDER BY a.total_plays DESC ) FROM shows_artists sa LEFT JOIN artists a ON sa.artists_id = a.id diff --git a/server/utils/media.php b/server/utils/media.php index d276881..dd6b6b6 100644 --- a/server/utils/media.php +++ b/server/utils/media.php @@ -2,8 +2,11 @@ function renderMediaGrid(array $items, int $count = 0, string $loading = 'lazy') { $limit = $count > 0 ? $count : count($items); + $firstType = $items[0]['type'] ?? ($items[0]['grid']['type'] ?? ''); + $shapeClass = in_array($firstType, ['books', 'movies', 'tv']) ? 'vertical' : 'square'; + + echo '
'; - echo '
'; foreach (array_slice($items, 0, $limit) as $item) { $grid = $item['grid'] ?? $item; $alt = htmlspecialchars($grid['alt'] ?? ''); @@ -12,7 +15,7 @@ $subtext = htmlspecialchars($grid['subtext'] ?? ''); $url = $grid['url'] ?? null; $type = $item['type'] ?? ''; - $isVertical = in_array($type, ['books', 'movies', 'shows']); + $isVertical = in_array($type, ['books', 'movies', 'tv']); $imageClass = $isVertical ? 'vertical' : 'square'; $width = $isVertical ? 120 : 150; $height = $isVertical ? 184 : 150; @@ -44,6 +47,7 @@ echo '
'; echo $closeLink; } + echo '
'; }