import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { ElevenLabsClient } from "@/utils/elevenlabs"; export async function POST(request: Request) { try { const data = await request.formData(); const audioFile = data.get("audio") as File; const name = data.get("name") as string; if (!audioFile || !name) { return NextResponse.json( { error: "Le fichier audio et le nom sont requis" }, { status: 400 } ); } // Vérifier la clé API ElevenLabs if (!process.env.ELEVENLABS_API_KEY) { console.error("Clé API ElevenLabs manquante"); // Pour le moment, on continue sans ElevenLabs const user = await prisma.user.create({ data: { name, }, }); return NextResponse.json({ id: user.id, name: user.name, }); } // Créer l'utilisateur const user = await prisma.user.create({ data: { name, }, }); try { // Initialiser le client ElevenLabs const elevenlabs = new ElevenLabsClient(process.env.ELEVENLABS_API_KEY); // Ajouter la voix à ElevenLabs const voiceId = await elevenlabs.addVoice(name, audioFile); console.log("Voice ID reçu:", voiceId); // Mettre à jour l'utilisateur avec l'ID de la voix const updatedUser = await prisma.user.update({ where: { id: user.id }, data: { voiceId, }, }); return NextResponse.json({ id: updatedUser.id, name: updatedUser.name, voiceId: updatedUser.voiceId, }); } catch (error) { console.error("Erreur ElevenLabs:", error); // Pour le moment, on continue sans l'ID de voix return NextResponse.json({ id: user.id, name: user.name, }); } } catch (error) { console.error("Erreur lors du traitement de la voix:", error); return NextResponse.json( { error: "Impossible de traiter la voix" }, { status: 500 } ); } }