41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import { promises as fs } from 'fs'
|
|
import path from 'path'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
const cwd = process.cwd()
|
|
|
|
// In production (.output/server), working dir is .output
|
|
let csvPath
|
|
if (cwd.endsWith('.output')) {
|
|
csvPath = path.join(cwd, '../public/data/vereinsmeisterschaften.csv')
|
|
} else {
|
|
csvPath = path.join(cwd, 'public/data/vereinsmeisterschaften.csv')
|
|
}
|
|
|
|
// CSV-Datei direkt als Text zurückgeben (keine Caching-Probleme)
|
|
const csv = await fs.readFile(csvPath, 'utf-8')
|
|
|
|
// Setze Content-Type und Cache-Control Header
|
|
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.code === 'ENOENT') {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: 'Vereinsmeisterschaften-Datei nicht gefunden'
|
|
})
|
|
}
|
|
console.error('Fehler beim Laden der Vereinsmeisterschaften:', error)
|
|
throw createError({
|
|
statusCode: 500,
|
|
statusMessage: 'Fehler beim Laden der Vereinsmeisterschaften'
|
|
})
|
|
}
|
|
})
|
|
|