import { NextRequest, NextResponse } from 'next/server' import { writeFile, readFile, mkdir } from 'fs/promises' import { existsSync } from 'fs' import path from 'path' // Speicherort fuer Uploads const UPLOADS_DIR = '/tmp/breakpilot-uploads' const METADATA_FILE = path.join(UPLOADS_DIR, 'metadata.json') interface UploadedFile { id: string sessionId: string name: string type: string size: number uploadedAt: string dataUrl: string // Base64 data URL } // Stelle sicher, dass das Upload-Verzeichnis existiert async function ensureUploadsDir() { if (!existsSync(UPLOADS_DIR)) { await mkdir(UPLOADS_DIR, { recursive: true }) } } // Lade Metadaten async function loadMetadata(): Promise { try { await ensureUploadsDir() if (existsSync(METADATA_FILE)) { const data = await readFile(METADATA_FILE, 'utf-8') return JSON.parse(data) } } catch (error) { console.error('Error loading metadata:', error) } return [] } // Speichere Metadaten async function saveMetadata(uploads: UploadedFile[]) { await ensureUploadsDir() await writeFile(METADATA_FILE, JSON.stringify(uploads, null, 2)) } // GET: Liste alle Uploads fuer eine Session export async function GET(request: NextRequest) { const sessionId = request.nextUrl.searchParams.get('sessionId') const uploads = await loadMetadata() if (sessionId) { const filtered = uploads.filter(u => u.sessionId === sessionId) return NextResponse.json({ uploads: filtered }) } // Alle Uploads (fuer Dashboard) return NextResponse.json({ uploads }) } // POST: Neuen Upload hinzufuegen export async function POST(request: NextRequest) { try { const body = await request.json() const { sessionId, name, type, size, dataUrl } = body if (!sessionId || !name || !dataUrl) { return NextResponse.json( { error: 'Missing required fields' }, { status: 400 } ) } const upload: UploadedFile = { id: `upload-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, sessionId, name, type: type || 'application/octet-stream', size: size || 0, uploadedAt: new Date().toISOString(), dataUrl } const uploads = await loadMetadata() uploads.push(upload) await saveMetadata(uploads) return NextResponse.json({ success: true, upload }) } catch (error) { console.error('Upload error:', error) return NextResponse.json( { error: 'Upload failed' }, { status: 500 } ) } } // DELETE: Upload loeschen export async function DELETE(request: NextRequest) { const id = request.nextUrl.searchParams.get('id') if (!id) { return NextResponse.json( { error: 'Missing upload id' }, { status: 400 } ) } const uploads = await loadMetadata() const filtered = uploads.filter(u => u.id !== id) await saveMetadata(filtered) return NextResponse.json({ success: true }) }