Skip to content
Snippets Groups Projects
route.ts 1.16 KiB
Newer Older
Caner's avatar
Caner committed
import { db } from "@/lib/db";
import { getCurrentUser } from "@/lib/session";
import { revalidatePath } from "next/cache";
import { NextRequest, NextResponse } from "next/server";

export async function PUT(req: NextRequest) {
	const user = await getCurrentUser();

	if (!user) {
		return NextResponse.json({ status: 401, message: 'Unauthorized' });
	}

	const userId = user.id;
DESKTOP-9FO96TP\hehexd's avatar
DESKTOP-9FO96TP\hehexd committed
	const data = await req.json()
	data.gameId = parseInt(data.gameId)
Yusuf Akgül's avatar
Yusuf Akgül committed

Caner's avatar
Caner committed
	try {
DESKTOP-9FO96TP\hehexd's avatar
DESKTOP-9FO96TP\hehexd committed
		if (data.add) {
			await db.user.update({
				where: {
					id: userId
				},
				data: {
					favGameList: {
						push: data.gameId
					}
				}
			})
		} else {
			const user = await db.user.findFirst({
				where: {
					id: userId
				},
				select: {
					favGameList: true
				},
			});

			await db.user.update({
				where: {
					id: userId
				},
				data: {
					favGameList: {
						set: user?.favGameList.filter((id) => id !== data.gameId),
					}
				}
			})
		}

Caner's avatar
Caner committed
		const path = req.nextUrl.searchParams.get('path') || '/';
		revalidatePath(path);

		return NextResponse.json({ status: 201, message: 'Game Hinzugefügt' })

	} catch (error: any) {
		return NextResponse.json({ status: 500, message: error.message })
	}
}