41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import supabase from '@/lib/db';
|
|
|
|
// GET - Ambil daftar nama dosen yang menjadi pembimbing
|
|
export async function GET() {
|
|
try {
|
|
const { data, error } = await supabase
|
|
.from('mahasiswa')
|
|
.select(`
|
|
dosen_pembimbing_1:dosen!pembimbing_1(nama_dosen),
|
|
dosen_pembimbing_2:dosen!pembimbing_2(nama_dosen)
|
|
`)
|
|
.or('pembimbing_1.not.is.null,pembimbing_2.not.is.null');
|
|
|
|
if (error) {
|
|
console.error('Error fetching dosen list:', error);
|
|
return NextResponse.json({ message: 'Internal Server Error' }, { status: 500 });
|
|
}
|
|
|
|
// Extract unique dosen names
|
|
const uniqueDosen = new Set<string>();
|
|
|
|
data.forEach((item: any) => {
|
|
if (item.dosen_pembimbing_1?.nama_dosen) {
|
|
uniqueDosen.add(item.dosen_pembimbing_1.nama_dosen);
|
|
}
|
|
if (item.dosen_pembimbing_2?.nama_dosen) {
|
|
uniqueDosen.add(item.dosen_pembimbing_2.nama_dosen);
|
|
}
|
|
});
|
|
|
|
// Convert to sorted array
|
|
const sortedDosen = Array.from(uniqueDosen).sort();
|
|
|
|
return NextResponse.json(sortedDosen);
|
|
} catch (error) {
|
|
console.error('Error fetching dosen list:', error);
|
|
return NextResponse.json({ message: 'Internal Server Error' }, { status: 500 });
|
|
}
|
|
}
|