import { randomUUID } from "crypto"; import { NextResponse } from "next/server"; import { prisma } from "../../../../lib/prisma"; import { requireSession } from "../../../../lib/auth-helpers"; export async function GET() { const { session } = await requireSession(); if (!session) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } const email = session.user?.email || ""; const existing = await prisma.userView.findFirst({ where: { user: { email } }, include: { items: { include: { event: true } }, categories: { include: { category: true } }, exclusions: true } }); if (existing) { return NextResponse.json(existing); } const view = await prisma.userView.create({ data: { name: "Meine Ansicht", token: randomUUID(), user: { connect: { email } } } }); const categories = await prisma.category.findMany({ select: { id: true } }); if (categories.length > 0) { await prisma.userViewCategory.createMany({ data: categories.map((category) => ({ viewId: view.id, categoryId: category.id })) }); } const hydrated = await prisma.userView.findUnique({ where: { id: view.id }, include: { items: { include: { event: true } }, categories: { include: { category: true } }, exclusions: true } }); return NextResponse.json(hydrated, { status: 201 }); }