56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
import { promises as fs } from 'fs'
|
|
import path from 'path'
|
|
import { getCurrentSeasonSlug } from '../../utils/spielplan-data.js'
|
|
|
|
const SEASON_FILE_PATTERN = /^mannschaften_(\d{2}--\d{2})\.csv$/
|
|
|
|
async function collectSeasonFiles(dirPath) {
|
|
try {
|
|
const files = await fs.readdir(dirPath)
|
|
return files
|
|
.map((name) => {
|
|
const match = name.match(SEASON_FILE_PATTERN)
|
|
return match ? match[1] : null
|
|
})
|
|
.filter(Boolean)
|
|
} catch (error) {
|
|
if (error?.code === 'ENOENT') return []
|
|
throw error
|
|
}
|
|
}
|
|
|
|
export default defineEventHandler(async () => {
|
|
try {
|
|
const cwd = process.cwd()
|
|
const dirs = [
|
|
path.join(cwd, 'server/data/public-data'),
|
|
path.join(cwd, '../server/data/public-data'),
|
|
path.join(cwd, '.output/public/data'),
|
|
path.join(cwd, 'public/data')
|
|
]
|
|
|
|
const seasonLists = await Promise.all(dirs.map((dir) => collectSeasonFiles(dir)))
|
|
const allSeasons = [...new Set(seasonLists.flat())].sort().reverse()
|
|
|
|
const currentSeason = getCurrentSeasonSlug()
|
|
const seasons = allSeasons.includes(currentSeason)
|
|
? allSeasons
|
|
: [currentSeason, ...allSeasons]
|
|
|
|
return {
|
|
success: true,
|
|
seasons,
|
|
currentSeason,
|
|
defaultSeason: seasons[0] || currentSeason
|
|
}
|
|
} catch (error) {
|
|
console.error('Fehler beim Laden der Mannschafts-Saisons:', error)
|
|
return {
|
|
success: false,
|
|
seasons: [getCurrentSeasonSlug()],
|
|
currentSeason: getCurrentSeasonSlug(),
|
|
defaultSeason: getCurrentSeasonSlug()
|
|
}
|
|
}
|
|
})
|