/**
 * GET /api/games/highscore?gameName=<snake|tetris|memory|tictactoe>
 *
 * 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,
  };
});
