import { NextRequest, NextResponse } from 'next/server';
import { getDb } from '@/lib/db';
import { getAuthenticatedAdmin } from '@/lib/admin-auth';

// Liefert die GECACHTEN Restaurants (nicht die Overpass-Livesuche aus
// /api/admin/restaurants/search). Ermoeglicht dem Admin, Datenqualitaet
// (Name/Kueche/Bild) direkt am Cache zu pruefen und zu korrigieren.
export async function GET(req: NextRequest) {
  const admin = await getAuthenticatedAdmin();
  if (!admin) return NextResponse.json({ error: 'Nicht autorisiert' }, { status: 401 });

  const url = req.nextUrl;
  const q = (url.searchParams.get('q') ?? '').trim();
  const limit = Math.min(Math.max(1, parseInt(url.searchParams.get('limit') ?? '50', 10) || 50), 200);

  const db = getDb();

  const conditions: string[] = [];
  const params: string[] = [];
  if (q) {
    conditions.push('(r.name LIKE ? OR r.address LIKE ? OR r.cuisine LIKE ? OR r.suburb LIKE ?)');
    const like = `%${q}%`;
    params.push(like, like, like, like);
  }
  const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';

  const restaurants = db
    .prepare(
      `SELECT r.id, r.name, r.address, r.postal_code, r.suburb, r.cuisine,
              r.is_fast_food, r.admin_image_url, r.osm_image_url, r.fallback_image_url,
              r.image_source_used
       FROM restaurants r
       ${where}
       ORDER BY r.name COLLATE NOCASE
       LIMIT ?`
    )
    .all(...params, limit);

  return NextResponse.json({ restaurants });
}
