import { NextResponse } from "next/server"; import { getSupabaseAdmin } from "@/lib/admin"; export async function GET( request: Request, { params }: { params: Promise<{ websiteId: string }> }, ) { try { const { websiteId } = await params; // Get crawl queue items const { data: queueItems, error: queueError } = await getSupabaseAdmin() .from("crawl_queue") .select("*") .eq("website_id", websiteId) .order("created_at", { ascending: false }); if (queueError) throw queueError; // Get crawl sessions const { data: sessions, error: sessionsError } = await getSupabaseAdmin() .from("crawl_sessions") .select("*") .eq("website_id", websiteId) .order("created_at", { ascending: false }); if (sessionsError) throw sessionsError; // Get pages discovered const { data: pages, error: pagesError } = await getSupabaseAdmin() .from("pages") .select("id, url, title, is_active, depth, created_at, metadata") .eq("website_id", websiteId) .order("created_at", { ascending: false }); if (pagesError) throw pagesError; // Get website info const { data: website, error: websiteError } = await getSupabaseAdmin() .from("websites") .select("*") .eq("id", websiteId) .single(); if (websiteError) throw websiteError; // Statistics const queueStats = { total: queueItems?.length || 0, pending: queueItems?.filter(item => item.status === 'pending').length || 0, processing: queueItems?.filter(item => item.status === 'processing').length || 0, completed: queueItems?.filter(item => item.status === 'completed').length || 0, failed: queueItems?.filter(item => item.status === 'failed').length || 0, skipped: queueItems?.filter(item => item.status === 'skipped').length || 0, }; const sessionStats = { total: sessions?.length || 0, running: sessions?.filter(s => s.status === 'running').length || 0, completed: sessions?.filter(s => s.status === 'completed').length || 0, failed: sessions?.filter(s => s.status === 'failed').length || 0, }; const pageStats = { total: pages?.length || 0, active: pages?.filter(p => p.is_active).length || 0, inactive: pages?.filter(p => !p.is_active).length || 0, }; return NextResponse.json({ website, queueStats, sessionStats, pageStats, queueItems: queueItems?.slice(0, 20), // Last 20 queue items sessions: sessions?.slice(0, 5), // Last 5 sessions pages: pages?.slice(0, 20), // Last 20 pages }); } catch (error) { console.error("Error fetching crawl debug info:", error); return NextResponse.json( { error: "Failed to fetch crawl debug info" }, { status: 500 }, ); } }