/** * GET /api/games/highscore?gameName= * * Liefert den Personal-Best-Score des aktuellen Users für ein bestimmtes Spiel. * Wird bei SOS-Spielstart gefetcht, damit Lyra dem User seinen PB nennen kann * ("Dein bester Score ist X — ich glaub an dich"). * * Response: * { score: number, hasRecord: boolean, updatedAt: string | null } * * Wenn kein Eintrag existiert: score=0, hasRecord=false. Lyra-Hint behandelt * dann den Erst-Spielen-Fall ("Probier's, lass uns deinen ersten Score setzen!"). */ import { usePrisma } from "../../utils/prisma"; export default defineEventHandler(async (event) => { const user = await requireUser(event); const query = getQuery(event); const gameName = String(query.gameName ?? "").trim(); if (!gameName) { throw createError({ statusCode: 400, message: "gameName query param required", }); } const db = usePrisma(); const hs = await db.gameHighScore.findUnique({ where: { userId_gameName: { userId: user.id, gameName } }, select: { score: true, updatedAt: true }, }); return { score: hs?.score ?? 0, hasRecord: !!hs, updatedAt: hs?.updatedAt?.toISOString() ?? null, }; });