import { NextRequest, NextResponse } from 'next/server' import prisma from '@/lib/prisma' import { auth } from '@/auth' import { revalidatePath } from 'next/cache' // POST /api/notes/[id]/move - Move a note to a notebook (or to Inbox) export async function POST( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } try { const { id } = await params const body = await request.json() const { notebookId } = body // Get the note const note = await prisma.note.findUnique({ where: { id }, select: { id: true, userId: true, notebookId: true } }) if (!note) { return NextResponse.json( { success: false, error: 'Note not found' }, { status: 404 } ) } // Verify ownership if (note.userId !== session.user.id) { return NextResponse.json( { success: false, error: 'Forbidden' }, { status: 403 } ) } // If notebookId is provided, verify it exists and belongs to the user if (notebookId !== null && notebookId !== '') { const notebook = await prisma.notebook.findUnique({ where: { id: notebookId }, select: { userId: true } }) if (!notebook || notebook.userId !== session.user.id) { return NextResponse.json( { success: false, error: 'Notebook not found or unauthorized' }, { status: 403 } ) } } // Update the note's notebook // notebookId = null or "" means move to Inbox (Notes générales) const updatedNote = await prisma.note.update({ where: { id }, data: { notebookId: notebookId && notebookId !== '' ? notebookId : null }, include: { notebook: { select: { id: true, name: true } } } }) revalidatePath('/') return NextResponse.json({ success: true, data: updatedNote, message: notebookId && notebookId !== '' ? `Note moved to "${updatedNote.notebook?.name || 'notebook'}"` : 'Note moved to Inbox' }) } catch (error) { return NextResponse.json( { success: false, error: 'Failed to move note' }, { status: 500 } ) } }