import prisma from '~/lib/prisma';
import { defineEventHandler, readBody, createError } from 'h3';

export default defineEventHandler(async (event) => {
  try {
    // Read the request body
    const body = await readBody(event);

    // Validate the input: Name, Email, and optionally Comment
    const { name, email, comment } = body;

    if (!name || !email) {
      throw createError({
        statusCode: 400,
        message: 'Name and Email are required',
      });
    }

    // Create the charte entry in the database
    const charte = await prisma.charte.create({
      data: {
        name,
        email,
        comment: comment || '', // Default to an empty string if no comment is provided
      },
    });

    // Return success and the created charte data
    return { success: true, charte };
  } catch (error) {
    // Log the error for debugging
    console.error('Error in charte API:', error);

    // Handle specific Prisma or validation errors
    if (error.code === 'P2002') {
      // Prisma-specific error for unique constraint violations (e.g., unique email)
      throw createError({
        statusCode: 409,
        message: 'A charte entry with this email already exists.',
      });
    }

    // Return a general error for unexpected issues
    throw createError({
      statusCode: error.statusCode || 500,
      message: error.message || 'Internal Server Error',
    });
  }
});
