import { promises as fs } from 'fs'
import path from 'path'

async function exists(p) {
  try {
    await fs.access(p)
    return true
  } catch {
    return false
  }
}

export default defineEventHandler(async (event) => {
  try {
    const cwd = process.cwd()
    const filename = 'mannschaften.csv'

    // Prefer CMS write target first (server/data/public-data),
    // then legacy locations.
    const candidates = [
      path.join(cwd, 'server/data/public-data', filename),
      path.join(cwd, '../server/data/public-data', filename),
      path.join(cwd, '.output/server/data', filename),
      path.join(cwd, 'server/data', filename),
      path.join(cwd, '.output/public/data', filename),
      path.join(cwd, 'public/data', filename),
      path.join(cwd, '../.output/public/data', filename),
      path.join(cwd, '../public/data', filename)
    ]

    let csvPath = null
    for (const p of candidates) {
       
      if (await exists(p)) {
        csvPath = p
        break
      }
    }

    if (!csvPath) {
      throw createError({
        statusCode: 404,
        statusMessage: 'Mannschaften-Datei nicht gefunden'
      })
    }

    const csv = await fs.readFile(csvPath, 'utf-8')

    setHeader(event, 'Content-Type', 'text/csv; charset=utf-8')
    setHeader(event, 'Cache-Control', 'no-cache, no-store, must-revalidate')
    setHeader(event, 'Pragma', 'no-cache')
    setHeader(event, 'Expires', '0')

    return csv
  } catch (error) {
    if (error?.statusCode) throw error
    console.error('Fehler beim Laden der Mannschaften:', error)
    throw createError({
      statusCode: 500,
      statusMessage: 'Fehler beim Laden der Mannschaften'
    })
  }
})

