import { NextRequest, NextResponse } from "next/server"; import { SkillsService } from "@/services/skills-service"; // Configuration pour éviter la génération statique export const dynamic = "force-dynamic"; // POST - Créer une nouvelle skill export async function POST(request: NextRequest) { try { const { name, categoryId, description, icon } = await request.json(); if (!name || !categoryId) { return NextResponse.json( { error: "Le nom et la catégorie sont requis" }, { status: 400 } ); } try { const skill = await SkillsService.createSkillForAdmin({ name, categoryId, description, icon, }); return NextResponse.json(skill, { status: 201 }); } catch (error: any) { if (error.message === "Une skill avec ce nom existe déjà") { return NextResponse.json({ error: error.message }, { status: 409 }); } throw error; } } catch (error) { console.error("Error creating skill:", error); return NextResponse.json( { error: "Erreur lors de la création de la skill" }, { status: 500 } ); } } // PUT - Mettre à jour une skill export async function PUT(request: NextRequest) { try { const { id, name, categoryId, description, icon } = await request.json(); if (!id || !name || !categoryId) { return NextResponse.json( { error: "L'ID, le nom et la catégorie sont requis" }, { status: 400 } ); } try { const skill = await SkillsService.updateSkillForAdmin({ id, name, categoryId, description, icon, }); return NextResponse.json(skill); } catch (error: any) { if (error.message === "Skill non trouvée") { return NextResponse.json({ error: error.message }, { status: 404 }); } if (error.message === "Une skill avec ce nom existe déjà") { return NextResponse.json({ error: error.message }, { status: 409 }); } throw error; } } catch (error) { console.error("Error updating skill:", error); return NextResponse.json( { error: "Erreur lors de la mise à jour de la skill" }, { status: 500 } ); } } // DELETE - Supprimer une skill export async function DELETE(request: NextRequest) { try { const { searchParams } = new URL(request.url); const id = searchParams.get("id"); if (!id) { return NextResponse.json( { error: "L'ID de la skill est requis" }, { status: 400 } ); } try { await SkillsService.deleteSkillForAdmin(id); return NextResponse.json({ message: "Skill supprimée avec succès" }); } catch (error: any) { if ( error.message === "Impossible de supprimer une skill qui est utilisée" ) { return NextResponse.json({ error: error.message }, { status: 409 }); } throw error; } } catch (error) { console.error("Error deleting skill:", error); return NextResponse.json( { error: "Erreur lors de la suppression de la skill" }, { status: 500 } ); } }