import { NextRequest, NextResponse } from 'next/server' import { Prisma } from '@prisma/client' import { auth } from '@/auth' import prisma from '@/lib/prisma' import { getDefaultDashboardLayout, normalizeDashboardLayout, type DashboardLayout, } from '@/lib/dashboard/layout' export async function GET() { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const settings = await prisma.userAISettings.findUnique({ where: { userId: session.user.id }, select: { dashboardLayout: true }, }) const layout = normalizeDashboardLayout(settings?.dashboardLayout ?? getDefaultDashboardLayout()) return NextResponse.json({ layout }) } export async function PUT(request: NextRequest) { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } let body: { layout?: DashboardLayout } try { body = await request.json() } catch { return NextResponse.json({ error: 'Invalid JSON' }, { status: 400 }) } const layout = normalizeDashboardLayout(body.layout ?? getDefaultDashboardLayout()) const layoutJson = layout as unknown as Prisma.InputJsonValue await prisma.userAISettings.upsert({ where: { userId: session.user.id }, create: { userId: session.user.id, dashboardLayout: layoutJson }, update: { dashboardLayout: layoutJson }, }) return NextResponse.json({ layout, ok: true }) }