/**
 * API endpoint para limpiar archivos temporales de Web Share Target
 * POST /api/share-target/cleanup
 *
 * Elimina archivos temporales después de ser procesados
 */
import { promises as fs } from 'fs'
import { join } from 'path'

export default defineEventHandler(async (event) => {
  try {
    const body = await readBody(event)
    const { imageUrl } = body

    if (!imageUrl || typeof imageUrl !== 'string') {
      throw createError({
        statusCode: 400,
        message: 'imageUrl es requerido'
      })
    }

    // Extraer el filename de la URL (/temp-shared/filename.jpg)
    const filename = imageUrl.split('/').pop()

    if (!filename || !filename.startsWith('shared-')) {
      throw createError({
        statusCode: 400,
        message: 'URL de imagen inválida'
      })
    }

    // Construir ruta completa del archivo
    const filepath = join(process.cwd(), 'public', 'temp-shared', filename)

    // Intentar eliminar el archivo
    try {
      await fs.unlink(filepath)
      console.log(`🗑️  Archivo temporal eliminado: ${filename}`)

      return {
        success: true,
        message: 'Archivo temporal eliminado correctamente'
      }
    } catch (err: any) {
      // Si el archivo no existe, no es un error crítico
      if (err.code === 'ENOENT') {
        console.log(`⚠️  Archivo temporal ya no existe: ${filename}`)
        return {
          success: true,
          message: 'Archivo ya había sido eliminado'
        }
      }
      throw err
    }
  } catch (error: any) {
    console.error('Error en cleanup de share-target:', error)

    // Re-throw si ya es un error de createError
    if (error.statusCode) {
      throw error
    }

    throw createError({
      statusCode: 500,
      message: error.message || 'Error al eliminar archivo temporal'
    })
  }
})
