import { db } from "@/lib/db" import { getCurrentUser } from "@/lib/session" import { User } from "@prisma/client" import { revalidatePath } from "next/cache" import { NextRequest, NextResponse } from "next/server" /** * @swagger * /api/users/gamelists: * put: * description: Changes gamelists of a user * id in body must match userid * responses: * 200: * description: Request handled! * 401: * description: Unauthorized * */ export async function PUT(req: NextRequest) { const sessionUser = await getCurrentUser() const data: User = await req.json() if (!sessionUser || sessionUser.id != data.id) { return NextResponse.json({ message: 'Unauthorized' }, { status: 401 }) } try { const dbUser = await db.user.findFirst({ where: { id: sessionUser.id }, select: { planningGameList: true, playingGameList: true, finishedGameList: true }, }) if (dbUser) { if (!data.finishedGameList) data.finishedGameList = dbUser?.finishedGameList if (!data.planningGameList) data.planningGameList = dbUser?.planningGameList if (!data.playingGameList) data.playingGameList = dbUser?.playingGameList await db.user.update({ where: { id: sessionUser.id }, data: { finishedGameList: data.finishedGameList, planningGameList: data.planningGameList, playingGameList: data.playingGameList } }) } const path = req.nextUrl.searchParams.get('path') || '/' revalidatePath(path) return NextResponse.json({ message: 'Game added' }, { status: 201 }) } catch (error: any) { return NextResponse.json({ message: error.message }, { status: 500 }) } }