/**
 * POST /api/coach/speak-google
 * Test endpoint for Google Cloud TTS
 */
export default defineEventHandler(async (event) => {
  await requireUser(event);

  const body = await readBody(event);
  const { text } = body as { text: string };

  if (!text?.trim()) {
    throw createError({ statusCode: 400, message: "text fehlt" });
  }

  const trimmed = text.slice(0, 4096);
  const config = useRuntimeConfig();

  if (!config.googleApiKey) {
    throw createError({ statusCode: 503, message: "Google API Key nicht konfiguriert" });
  }

  try {
    const response = await fetch(
      `https://texttospeech.googleapis.com/v1/text:synthesize?key=${config.googleApiKey}`,
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          input: { text: trimmed },
          voice: {
            languageCode: "de-DE",
            name: "de-DE-Neural2-F",
            ssmlGender: "FEMALE",
          },
          audioConfig: {
            audioEncoding: "MP3",
            speakingRate: 1.0,
            pitch: 0,
          },
        }),
      }
    );

    const result = await response.json();

    if (!response.ok) {
      console.error("[speak-google] Google TTS error:", result);
      throw createError({
        statusCode: response.status,
        message: result.error?.message || "Google TTS fehlgeschlagen",
      });
    }

    if (!result.audioContent) {
      console.error("[speak-google] No audioContent:", result);
      throw createError({ statusCode: 502, message: "Google TTS: kein Audio zurückgegeben" });
    }

    return { audio: `data:audio/mp3;base64,${result.audioContent}` };
  } catch (err: any) {
    console.error("[speak-google] Error:", err);
    throw createError({
      statusCode: 502,
      message: err?.message || "Google TTS fehlgeschlagen",
    });
  }
});
