refactor(vereinsmeisterschaften): streamline file existence check and improve error handling
This commit is contained in:
@@ -1,22 +1,44 @@
|
|||||||
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'),
|
||||||
|
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
|
||||||
}
|
}
|
||||||
} 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')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user