import { NextResponse } from 'next/server'; import { getDb } from '@/lib/db'; export const dynamic = 'force-dynamic'; export async function GET() { try { const db = await getDb(); // Get live status (most recent log per service) const live = await db.all(` SELECT service_name as name, url, status, latency FROM uptime_logs WHERE id IN (SELECT MAX(id) FROM uptime_logs GROUP BY service_name) `); // Get 24h stats const stats24h = await db.all(` SELECT service_name, count(*) as total, sum(case when status = 'up' then 1 else 0 end) as up_count FROM uptime_logs WHERE timestamp > datetime('now', '-24 hours') GROUP BY service_name `); // Get 7d stats const stats7d = await db.all(` SELECT service_name, count(*) as total, sum(case when status = 'up' then 1 else 0 end) as up_count FROM uptime_logs WHERE timestamp > datetime('now', '-7 days') GROUP BY service_name `); // Merge data const results = live.map(l => { const s24 = stats24h.find(s => s.service_name === l.name); const s7d = stats7d.find(s => s.service_name === l.name); return { ...l, uptime24h: s24 ? Math.round((s24.up_count / s24.total) * 100) : 100, uptime7d: s7d ? Math.round((s7d.up_count / s7d.total) * 100) : 100, }; }); return NextResponse.json(results); } catch (error) { console.error('Uptime stats error:', error); // Fallback to simple check if DB fails return NextResponse.json([]); } }