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(() => ( +
+ ))} + + +
+
+ )) + } +