import { NextRequest, NextResponse } from 'next/server' import prisma from '@/lib/prisma' import { auth } from '@/auth' import { generateBrainstormPptx } from '@/lib/brainstorm/export-pptx' export async function POST( _request: NextRequest, { params }: { params: Promise<{ sessionId: string }> } ) { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } try { const { sessionId } = await params const brainstormSession = await prisma.brainstormSession.findFirst({ where: { id: sessionId, OR: [ { userId: session.user.id }, { participants: { some: { userId: session.user.id } } }, ], }, include: { ideas: { orderBy: [{ waveNumber: 'asc' }, { createdAt: 'asc' }], }, }, }) if (!brainstormSession) { return NextResponse.json({ error: 'Session not found' }, { status: 404 }) } const sessionData = { seedIdea: brainstormSession.seedIdea, createdAt: brainstormSession.createdAt, ideas: brainstormSession.ideas.map(idea => ({ id: idea.id, title: idea.title, description: idea.description, waveNumber: idea.waveNumber, status: idea.status, isStarred: idea.isStarred, convertedToNoteId: idea.convertedToNoteId, })), } const { buffer, filename } = await generateBrainstormPptx(sessionData) return new NextResponse(new Uint8Array(buffer), { status: 200, headers: { 'Content-Type': 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'Content-Disposition': `attachment; filename="${filename}"`, 'Content-Length': String(buffer.length), }, }) } catch (err) { console.error('[export-pptx]', err) return NextResponse.json({ error: 'Export failed' }, { status: 500 }) } }