38 lines
1.1 KiB
TypeScript

import { usePrisma } from "../../utils/prisma";
export default defineEventHandler(async (event) => {
const user = await requireUser(event);
const body = await readBody(event);
const { gameName, score, nickname } = body;
if (!gameName || typeof score !== "number" || score < 0) {
throw createError({
statusCode: 400,
message: "gameName und score erforderlich",
});
}
const db = usePrisma();
const name = String(
nickname ||
user.user_metadata?.nickname ||
user.email?.split("@")[0] ||
"Anonym",
).slice(0, 30);
// Nur updaten wenn neuer Score besser ist
const existing = await db.gameHighScore.findUnique({
where: { userId_gameName: { userId: user.id, gameName } },
});
if (!existing || score > existing.score) {
await db.gameHighScore.upsert({
where: { userId_gameName: { userId: user.id, gameName } },
create: { userId: user.id, nickname: name, gameName, score },
update: { score, nickname: name },
});
}
return { ok: true, isNewBest: !existing || score > existing.score };
});