refactor(vereinsmeisterschaften): streamline file existence check and improve error handling
Some checks failed
Code Analysis and Production Deploy / deploy-production (push) Has been cancelled
Code Analysis and Production Deploy / deploy-test (push) Has been cancelled
Code Analysis and Production Deploy / analyze (push) Has been cancelled

This commit is contained in:
Torsten Schulz (local)
2026-05-22 13:54:02 +02:00
parent 7289adb7a0
commit 1ea7f7a63f

View File

@@ -1,24 +1,46 @@
import { promises as fs } from 'fs' import { promises as fs } from 'fs'
import path from 'path' import path from 'path'
async function exists(filePath) {
try {
await fs.access(filePath)
return true
} catch {
return false
}
}
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
try { try {
const cwd = process.cwd() const cwd = process.cwd()
// Prefer internal server/data, fallback to public/data // Prefer CMS write target first (server/data/public-data), then legacy locations.
let csvPath const candidates = [
if (cwd.endsWith('.output')) { path.join(cwd, 'server/data/public-data/vereinsmeisterschaften.csv'),
csvPath = path.join(cwd, '../server/data/vereinsmeisterschaften.csv') path.join(cwd, '../server/data/public-data/vereinsmeisterschaften.csv'),
if (!(await fs.access(csvPath).then(()=>true).catch(()=>false))) { path.join(cwd, '.output/server/data/vereinsmeisterschaften.csv'),
csvPath = path.join(cwd, '../public/data/vereinsmeisterschaften.csv') path.join(cwd, 'server/data/vereinsmeisterschaften.csv'),
} path.join(cwd, '.output/public/data/vereinsmeisterschaften.csv'),
} else { path.join(cwd, 'public/data/vereinsmeisterschaften.csv'),
csvPath = path.join(cwd, 'server/data/vereinsmeisterschaften.csv') path.join(cwd, '../.output/public/data/vereinsmeisterschaften.csv'),
if (!(await fs.access(csvPath).then(()=>true).catch(()=>false))) { path.join(cwd, '../public/data/vereinsmeisterschaften.csv')
csvPath = path.join(cwd, 'public/data/vereinsmeisterschaften.csv') ]
let csvPath = null
for (const candidate of candidates) {
if (await exists(candidate)) {
csvPath = candidate
break
} }
} }
if (!csvPath) {
throw createError({
statusCode: 404,
statusMessage: 'Vereinsmeisterschaften-Datei nicht gefunden'
})
}
// CSV-Datei direkt als Text zurückgeben (keine Caching-Probleme) // CSV-Datei direkt als Text zurückgeben (keine Caching-Probleme)
const csv = await fs.readFile(csvPath, 'utf-8') const csv = await fs.readFile(csvPath, 'utf-8')
@@ -30,12 +52,7 @@ export default defineEventHandler(async (event) => {
return csv return csv
} catch (error) { } catch (error) {
if (error.code === 'ENOENT') { if (error?.statusCode) throw error
throw createError({
statusCode: 404,
statusMessage: 'Vereinsmeisterschaften-Datei nicht gefunden'
})
}
console.error('Fehler beim Laden der Vereinsmeisterschaften:', error) console.error('Fehler beim Laden der Vereinsmeisterschaften:', error)
throw createError({ throw createError({
statusCode: 500, statusCode: 500,