45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
import { usePrisma } from "../../utils/prisma";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = await requireUser(event);
|
|
const query = getQuery(event);
|
|
const opponentId = query.opponentId as string | undefined;
|
|
const limit = Math.min(Number(query.limit) || 10, 50);
|
|
|
|
const db = usePrisma();
|
|
|
|
const where = opponentId
|
|
? {
|
|
OR: [
|
|
{ challengerId: user.id, opponentId },
|
|
{ challengerId: opponentId, opponentId: user.id },
|
|
],
|
|
status: "FINISHED" as const,
|
|
}
|
|
: {
|
|
OR: [
|
|
{ challengerId: user.id },
|
|
{ opponentId: user.id },
|
|
],
|
|
status: "FINISHED" as const,
|
|
};
|
|
|
|
const games = await db.gameChallenge.findMany({
|
|
where,
|
|
orderBy: { updatedAt: "desc" },
|
|
take: limit,
|
|
select: {
|
|
id: true,
|
|
challengerId: true,
|
|
challengerName: true,
|
|
opponentId: true,
|
|
opponentName: true,
|
|
winner: true,
|
|
createdAt: true,
|
|
updatedAt: true,
|
|
},
|
|
});
|
|
|
|
return games;
|
|
});
|