From 7dcd39f106adb6971f3d591d086485ed7d0ca879 Mon Sep 17 00:00:00 2001 From: Jorge Vargas Date: Sun, 27 Apr 2025 11:32:16 -0600 Subject: [PATCH] Implement /publisher/list --- src/components/letterList/PublisherList.astro | 21 +++++++++++ src/pages/publisher/list/index.astro | 35 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/components/letterList/PublisherList.astro create mode 100644 src/pages/publisher/list/index.astro diff --git a/src/components/letterList/PublisherList.astro b/src/components/letterList/PublisherList.astro new file mode 100644 index 0000000..92e83f9 --- /dev/null +++ b/src/components/letterList/PublisherList.astro @@ -0,0 +1,21 @@ +--- +import prismaClient from 'utils/prisma-client' + +interface Props { + letter: string +} + +const { letter } = Astro.props +const games = await prismaClient.publisher.findMany({ + where: { name: { startsWith: letter } }, + select: { id: true, name: true } +}) +--- + +{ + games.map((a) => ( + + {a.name} + + )) +} diff --git a/src/pages/publisher/list/index.astro b/src/pages/publisher/list/index.astro new file mode 100644 index 0000000..f02c82c --- /dev/null +++ b/src/pages/publisher/list/index.astro @@ -0,0 +1,35 @@ +--- +import prismaClient from 'utils/prisma-client' + +import LetterList from 'layouts/LetterList.astro' +import GameList from 'components/letterList/GameList.astro' +import PublisherList from 'components/letterList/PublisherList.astro' + +const letters: { letter: string; count: BigInt }[] = await prismaClient.$queryRaw` + SELECT DISTINCT UPPER(LEFT(publisher.name, 1)) AS letter, COUNT(*) AS count + FROM Publisher_Game, publisher, game + WHERE Publisher_Game.publisherId = publisher.id + AND Publisher_Game.gameSlug = game.slug + GROUP BY letter + ORDER BY letter; +` +--- + + + { + letters.map((l) => ( +
+
{l.letter}
+
+ + + {Array.from({ length: Number(l.count) }).map(() => ( +
+ ))} + + +
+
+ )) + } +