import Stripe from "stripe";
import { usePrisma } from "../../utils/prisma";

/**
 * POST /api/stripe/portal
 * Erstellt eine Stripe Billing Portal Session (Abo verwalten/kündigen).
 */
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig();
  const stripe = new Stripe(config.stripeSecretKey);

  const user = await requireUser(event);

  const db = usePrisma();
  const profile = await db.profile.findUnique({
    where: { id: user.id },
    select: { stripeCustomerId: true },
  });

  if (!profile?.stripeCustomerId) {
    throw createError({
      statusCode: 400,
      message: "Kein aktives Abo gefunden",
    });
  }

  const appUrl = config.public.appUrl || "https://rebreak.app";

  const session = await stripe.billingPortal.sessions.create({
    customer: profile.stripeCustomerId,
    return_url: `${appUrl}/app/settings`,
  });

  return { url: session.url };
});
