/**
 * @ai-summary Webhook routes for Stripe events
 * @ai-context PUBLIC endpoint - no JWT auth, authenticated via Stripe signature
 */

import { FastifyPluginAsync } from 'fastify';
import { WebhooksController } from './webhooks.controller';

export const webhooksRoutes: FastifyPluginAsync = async (fastify) => {
  const controller = new WebhooksController();

  // POST /api/webhooks/stripe - PUBLIC endpoint (no JWT auth)
  // Stripe authenticates via webhook signature verification
  // IMPORTANT: rawBody MUST be enabled for signature verification to work
  fastify.post(
    '/webhooks/stripe',
    {
      config: {
        rawBody: true, // Enable raw body for Stripe signature verification
      },
    },
    controller.handleStripeWebhook.bind(controller)
  );
};
