import { NextRequest, NextResponse } from 'next/server'; import prisma from '@/lib/prisma'; import { getCurrentUser } from '@/lib/auth'; import type { GenerateAppRequest, GenerateAppResponse, GenerateAppError400, GenerateAppError404 } from '@/types/api-types'; export async function POST(request: NextRequest) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const body: GenerateAppRequest = await request.json(); if (!body.recordingId) { const error: GenerateAppError400 = { error: 'Recording ID is required' }; return NextResponse.json(error, { status: 400 }); } // Find recording const recording = await prisma.recording.findUnique({ where: { id: body.recordingId }, select: { userId: true, summary: true, title: true } }); if (!recording) { const error: GenerateAppError404 = { error: 'Recording not found' }; return NextResponse.json(error, { status: 404 }); } // Check ownership if (recording.userId !== user.id) { return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); } // Check if summary exists if (!recording.summary) { const error: GenerateAppError400 = { error: 'Recording summary not available' }; return NextResponse.json(error, { status: 400 }); } // TODO: Call AI to generate app from summary // For now, create a placeholder app const htmlContent = ` Generated App

Generated App

This app was generated from: ${recording.title}

Summary: ${recording.summary}

`.trim(); // Create generated app const generatedApp = await prisma.generatedApp.create({ data: { userId: user.id, recordingId: body.recordingId, title: `App from ${recording.title}`, description: 'Auto-generated application', htmlContent, appType: 'generated', status: 'completed', }, select: { id: true, recordingId: true, status: true, } }); const response: GenerateAppResponse = { id: generatedApp.id, recordingId: generatedApp.recordingId, status: generatedApp.status, }; return NextResponse.json(response, { status: 201 }); } catch (error) { console.error('Generate app error:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } }