import { NextRequest, NextResponse } from 'next/server' import { requireAdmin } from '@/lib/require-admin' import { EMPTY_SITE_PAGES, SITE_MEDIA, SITE_PAGES, validateSitePages } from '@/lib/site-pages' import { readSitePages } from '@/lib/site-pages.server' // Prisma client instance import { prisma } from "@/lib/prisma" // GET /api/site-pages - liefert die Inhalte der rechtlichen Seiten export async function GET() { try { return NextResponse.json(await readSitePages()) } catch (error) { console.error('Error fetching site pages:', error) return NextResponse.json( { error: 'Fehler beim Abrufen der Seiteninhalte' }, { status: 500 } ) } } // PUT /api/site-pages - speichert die Inhalte der rechtlichen Seiten (Admin) export async function PUT(request: NextRequest) { try { const denied = await requireAdmin() if (denied) return denied const data = await request.json() const result = await prisma.$transaction(async (tx) => { const previous = await tx.sitePages.findUnique({ where: { id: 1 } }) const errors = validateSitePages(data, previous ?? EMPTY_SITE_PAGES) if (errors.length) return { errors } const values = Object.fromEntries( [...SITE_PAGES, ...SITE_MEDIA].map(key => [key, data[key].trim()]) ) const saved = await tx.sitePages.upsert({ where: { id: 1 }, update: values, create: { id: 1, ...values }, }) return { saved } }) if (result.errors) return NextResponse.json({ error: "Bitte prüfen Sie die Seiteninhalte.", details: result.errors }, { status: 400 }) const saved = result.saved return NextResponse.json(saved) } catch (error) { console.error('Error updating site pages:', error) return NextResponse.json( { error: 'Fehler beim Speichern der Seiteninhalte' }, { status: 500 } ) } }