Skip to content

Commit 609b6b3

Browse files
feat: add platform count
1 parent 5ced0af commit 609b6b3

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { and, eq } from 'drizzle-orm'
2+
import { getContextData } from 'waku/middleware/context'
3+
import { romTable } from '../databases/library/schema.ts'
4+
5+
export async function getRomPlatformCount() {
6+
const { currentUser, db } = getContextData()
7+
const { library } = db
8+
9+
const results = await library
10+
.selectDistinct({ platform: romTable.platform })
11+
.from(romTable)
12+
.orderBy(romTable.file_name)
13+
.where(and(eq(romTable.user_id, currentUser.id), eq(romTable.status, 1)))
14+
15+
return results.length
16+
}

src/pages/library/components/game-list.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export function GameList({ pagination, roms: initialRoms }: { pagination: RomsPa
1717

1818
return (
1919
<div>
20-
<div className='grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(calc(var(--spacing)*40),1fr))]'>
20+
<div className='grid gap-x-4 gap-y-8 [grid-template-columns:repeat(auto-fill,minmax(calc(var(--spacing)*40),1fr))]'>
2121
{renderedRoms.map((rom) => (
2222
<GameEntry key={rom.id} rom={rom} />
2323
))}

src/pages/library/page.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
import { getRomPlatformCount } from '@/controllers/get-rom-platform-count.ts'
12
import { getRoms } from '@/controllers/get-roms.ts'
23
import AppLayout from './components/app-layout.tsx'
34
import { GameList } from './components/game-list.tsx'
45

56
export async function LibraryPage({ query }: { query: string }) {
67
const page = Number.parseInt(new URLSearchParams(query).get('page') || '', 10) || 1
7-
const { pagination, roms } = await getRoms({ page })
8+
const [{ pagination, roms }, platformCount] = await Promise.all([getRoms({ page }), getRomPlatformCount()])
89

910
if (page > 1 && roms.length === 0) {
1011
return '404'
@@ -15,11 +16,11 @@ export async function LibraryPage({ query }: { query: string }) {
1516
<title>Library - RetroAssembly</title>
1617
<div className='flex flex-col gap-5'>
1718
<div className='relative flex justify-between px-4 pt-4'>
18-
<h1 className='text-5xl font-[Oswald_Variable] font-semibold'>Library {page}</h1>
19+
<h1 className='text-5xl font-[Oswald_Variable] font-semibold'>Library</h1>
1920
<div className='mt-4 flex items-center gap-2 text-zinc-400'>
2021
<span className='icon-[mdi--bar-chart] text-black' />
2122
<span className='font-[DSEG7_Modern] font-bold text-rose-700'>{roms.length}</span> games for{' '}
22-
<span className='font-[DSEG7_Modern] font-bold text-rose-700'>{8}</span> platforms in total
23+
<span className='font-[DSEG7_Modern] font-bold text-rose-700'>{platformCount}</span> platforms in total
2324
</div>
2425
</div>
2526
<hr className='border-t-1 border-t-black/20' />

0 commit comments

Comments
 (0)