refactor(vereinsmeisterschaften): streamline file existence check and improve error handling
This commit is contained in:
@@ -1,24 +1,46 @@
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
async function exists(filePath) {
|
||||
try {
|
||||
await fs.access(filePath)
|
||||
return true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const cwd = process.cwd()
|
||||
|
||||
// Prefer internal server/data, fallback to public/data
|
||||
let csvPath
|
||||
if (cwd.endsWith('.output')) {
|
||||
csvPath = path.join(cwd, '../server/data/vereinsmeisterschaften.csv')
|
||||
if (!(await fs.access(csvPath).then(()=>true).catch(()=>false))) {
|
||||
csvPath = path.join(cwd, '../public/data/vereinsmeisterschaften.csv')
|
||||
}
|
||||
} else {
|
||||
csvPath = path.join(cwd, 'server/data/vereinsmeisterschaften.csv')
|
||||
if (!(await fs.access(csvPath).then(()=>true).catch(()=>false))) {
|
||||
csvPath = path.join(cwd, 'public/data/vereinsmeisterschaften.csv')
|
||||
// Prefer CMS write target first (server/data/public-data), then legacy locations.
|
||||
const candidates = [
|
||||
path.join(cwd, 'server/data/public-data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, '../server/data/public-data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, '.output/server/data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, 'server/data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, '.output/public/data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, 'public/data/vereinsmeisterschaften.csv'),
|
||||
path.join(cwd, '../.output/public/data/vereinsmeisterschaften.csv'),
|
||||
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)
|
||||
const csv = await fs.readFile(csvPath, 'utf-8')
|
||||
|
||||
@@ -30,12 +52,7 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
return csv
|
||||
} catch (error) {
|
||||
if (error.code === 'ENOENT') {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
statusMessage: 'Vereinsmeisterschaften-Datei nicht gefunden'
|
||||
})
|
||||
}
|
||||
if (error?.statusCode) throw error
|
||||
console.error('Fehler beim Laden der Vereinsmeisterschaften:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
|
||||
Reference in New Issue
Block a user