import { NextRequest, NextResponse } from "next/server"; import supabase from "@/lib/db"; // GET - Ambil semua data kelompok keahlian export async function GET() { try { const { data, error } = await supabase .from('kelompok_keahlian') .select('id_kk, nama_kelompok') .order('nama_kelompok'); if (error) { throw error; } return NextResponse.json(data); } catch (error) { console.error("Error fetching kelompok keahlian:", error); return NextResponse.json( { error: "Failed to fetch kelompok keahlian data" }, { status: 500 } ); } } // POST - Buat kelompok keahlian baru export async function POST(request: NextRequest) { try { const { nama_kelompok } = await request.json(); // Validasi if (!nama_kelompok) { return NextResponse.json( { error: "nama_kelompok is required" }, { status: 400 } ); } // Cek apakah nama_kelompok sudah ada const { data: existingKelompok, error: checkError } = await supabase .from('kelompok_keahlian') .select('id_kk') .eq('nama_kelompok', nama_kelompok) .single(); if (checkError && checkError.code !== 'PGRST116') { throw checkError; } if (existingKelompok) { return NextResponse.json( { error: "Nama kelompok keahlian already exists" }, { status: 400 } ); } const { data, error } = await supabase .from('kelompok_keahlian') .insert([{ nama_kelompok }]) .select('id_kk, nama_kelompok') .single(); if (error) { throw error; } return NextResponse.json(data, { status: 201 }); } catch (error) { console.error("Error creating kelompok keahlian:", error); return NextResponse.json( { error: "Failed to create kelompok keahlian" }, { status: 500 } ); } } // PUT - Update data kelompok keahlian export async function PUT(request: NextRequest) { try { const { id_kk, nama_kelompok } = await request.json(); // Validation if (!id_kk || !nama_kelompok) { return NextResponse.json( { error: "id_kk and nama_kelompok are required" }, { status: 400 } ); } // Cek apakah kelompok keahlian ada const { data: existingKelompok, error: checkError } = await supabase .from('kelompok_keahlian') .select('id_kk') .eq('id_kk', id_kk) .single(); if (checkError && checkError.code !== 'PGRST116') { throw checkError; } if (!existingKelompok) { return NextResponse.json( { error: "Kelompok keahlian not found" }, { status: 404 } ); } // Cek apakah nama_kelompok sudah ada untuk kelompok lain const { data: duplicateNama, error: duplicateError } = await supabase .from('kelompok_keahlian') .select('id_kk') .eq('nama_kelompok', nama_kelompok) .neq('id_kk', id_kk) .single(); if (duplicateError && duplicateError.code !== 'PGRST116') { throw duplicateError; } if (duplicateNama) { return NextResponse.json( { error: "Nama kelompok keahlian already exists for another kelompok" }, { status: 400 } ); } const { data, error } = await supabase .from('kelompok_keahlian') .update({ nama_kelompok }) .eq('id_kk', id_kk) .select('id_kk, nama_kelompok') .single(); if (error) { throw error; } return NextResponse.json(data); } catch (error) { console.error("Error updating kelompok keahlian:", error); return NextResponse.json( { error: "Failed to update kelompok keahlian" }, { status: 500 } ); } }