import { NextRequest, NextResponse } from 'next/server' import { writeFile, mkdir } from 'node:fs/promises' import path from 'node:path' import { readConfig } from '@/utils/config' export const runtime = 'nodejs' export async function POST(req: NextRequest) { const password = req.headers.get('x-admin-password') || '' const config = await readConfig() if (password !== config.adminPassword) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const formData = await req.formData() const csvFile = formData.get('csv') as File | null const logoFile = formData.get('logo') as File | null const results: { csv?: string; logo?: string; error?: string } = {} if (csvFile) { try { const buffer = await csvFile.arrayBuffer() const csvDir = path.join(process.cwd(), 'src', 'data') await mkdir(csvDir, { recursive: true }) const csvPath = path.join(csvDir, csvFile.name) await writeFile(csvPath, Buffer.from(buffer)) results.csv = `✓ CSV uploaded: ${csvFile.name}` } catch (e: any) { results.error = `CSV upload failed: ${e.message}` } } if (logoFile) { try { const buffer = await logoFile.arrayBuffer() const logoDir = path.join(process.cwd(), 'public', 'branding') await mkdir(logoDir, { recursive: true }) const logoPath = path.join(logoDir, logoFile.name) await writeFile(logoPath, Buffer.from(buffer)) results.logo = `✓ Logo uploaded: ${logoFile.name}` } catch (e: any) { results.error = `Logo upload failed: ${e.message}` } } if (!csvFile && !logoFile) { return NextResponse.json({ error: 'No files provided' }, { status: 400 }) } if (results.error) { return NextResponse.json(results, { status: 500 }) } return NextResponse.json(results) }