import { NextResponse } from "next/server"; import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth/options"; import { prisma } from "@/lib/prisma"; export async function PATCH( req: Request, { params }: { params: Promise<{ messageId: string }> } ) { const { messageId } = await params; const session = await getServerSession(authOptions); if (!session?.user?.id) { return new NextResponse("Unauthorized", { status: 401 }); } try { const body = await req.json(); const { title, content, recipients, checkInterval, intervalUnit, isEncrypted } = body; const existingMessage = await prisma.message.findUnique({ where: { id: messageId, userId: session.user.id }, }); if (!existingMessage) { return new NextResponse("Unauthorized", { status: 401 }); } // Delete existing recipients and recreate them for simplicity in update await prisma.recipient.deleteMany({ where: { messageId: messageId }, }); const message = await prisma.message.update({ where: { id: messageId, userId: session.user.id, }, data: { title, content, checkInterval, intervalUnit: intervalUnit || existingMessage.intervalUnit, isEncrypted: isEncrypted || existingMessage.isEncrypted, recipients: { create: recipients.map((email: string) => ({ email })), }, }, }); return NextResponse.json(message); } catch (error) { console.error("MESSAGE_PATCH_ERROR", error); return new NextResponse("Internal Server Error", { status: 500 }); } } export async function DELETE( req: Request, { params }: { params: Promise<{ messageId: string }> } ) { const { messageId } = await params; const session = await getServerSession(authOptions); if (!session?.user?.id) { return new NextResponse("Unauthorized", { status: 401 }); } try { const message = await prisma.message.delete({ where: { id: messageId, userId: session.user.id, }, }); return NextResponse.json(message); } catch (error) { console.error("MESSAGE_DELETE_ERROR", error); return new NextResponse("Internal Server Error", { status: 500 }); } }