import { NextResponse } from 'next/server'; import pool from '@/lib/db'; interface IpkStatus { tahun_angkatan: number; status_kuliah: string; total_mahasiswa: number; rata_rata_ipk: number; } export async function GET(request: Request) { try { const { searchParams } = new URL(request.url); const tahunAngkatan = searchParams.get('tahun_angkatan'); const statusKuliah = searchParams.get('status_kuliah'); if (!statusKuliah) { console.error('Missing required parameter: status_kuliah'); return NextResponse.json( { error: 'Missing required parameter: status_kuliah' }, { status: 400 } ); } let query = ` SELECT m.tahun_angkatan, s.status_kuliah, COUNT(m.nim) AS total_mahasiswa, ROUND(AVG(m.ipk), 2) AS rata_rata_ipk FROM mahasiswa m JOIN status_mahasiswa s ON m.nim = s.nim WHERE s.status_kuliah = ? `; const params: any[] = [statusKuliah]; if (tahunAngkatan && tahunAngkatan !== 'all') { query += ' AND m.tahun_angkatan = ?'; params.push(tahunAngkatan); } query += ` GROUP BY m.tahun_angkatan, s.status_kuliah ORDER BY m.tahun_angkatan DESC, s.status_kuliah `; const [rows] = await pool.query(query, params); return NextResponse.json(rows); } catch (error) { console.error('Error in ipk-status route:', error); return NextResponse.json( { error: 'Internal Server Error', details: error instanceof Error ? error.message : 'Unknown error' }, { status: 500 } ); } }