import { NextResponse } from 'next/server'; import supabase from '@/lib/db'; interface StatusData { tahun_angkatan: number; status_kuliah: string; jumlah: number; } export async function GET() { try { const { data, error } = await supabase .from('mahasiswa') .select('status_kuliah, tahun_angkatan') .in('status_kuliah', ['Lulus', 'Cuti', 'Aktif', 'Non Aktif']); if (error) { console.error('Error fetching status data:', error); return NextResponse.json( { error: 'Failed to fetch status data' }, { status: 500 } ); } // Group by tahun_angkatan and status_kuliah const groupedData = data.reduce((acc, item: any) => { const tahun_angkatan = item.tahun_angkatan; const status_kuliah = item.status_kuliah; const key = `${tahun_angkatan}-${status_kuliah}`; acc[key] = (acc[key] || 0) + 1; return acc; }, {} as Record); // Convert to final format const results: StatusData[] = Object.entries(groupedData).map(([key, jumlah]) => { const [tahun_angkatan, status_kuliah] = key.split('-'); return { tahun_angkatan: parseInt(tahun_angkatan), status_kuliah, jumlah }; }); return NextResponse.json(results); } catch (error) { console.error('Error fetching status data:', error); return NextResponse.json( { error: 'Failed to fetch status data' }, { status: 500 } ); } }