import { NextRequest, NextResponse } from 'next/server'; import { getBookReviews } from '@/lib/directus'; import { checkRateLimit, getClientIp } from '@/lib/auth'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; /** * GET /api/book-reviews * * Loads Book Reviews from Directus CMS * * Query params: * - locale: en or de (default: en) */ export async function GET(request: NextRequest) { // Rate Limit: 60 requests per minute const ip = getClientIp(request); if (!checkRateLimit(ip, 60, 60000)) { return NextResponse.json({ error: 'Rate limit exceeded' }, { status: 429 }); } try { const { searchParams } = new URL(request.url); const locale = searchParams.get('locale') || 'en'; const reviews = await getBookReviews(locale); if (process.env.NODE_ENV === 'development') { console.log(`[API] Book Reviews geladen für ${locale}:`, reviews?.length || 0); } if (reviews && reviews.length > 0) { return NextResponse.json({ bookReviews: reviews, source: 'directus' }); } return NextResponse.json({ bookReviews: null, source: 'fallback' }); } catch (error) { console.error('Error loading book reviews:', error); return NextResponse.json( { bookReviews: null, error: 'Failed to load book reviews', source: 'error' }, { status: 500 } ); } }