feat(mannschaften): split SUN columns and prepare seasonal team CSVs
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
import { getCurrentSeasonSlug, validateSeasonSlug } from '../utils/spielplan-data.js'
|
||||
|
||||
function normalizeSeasonFilename(season) {
|
||||
return `mannschaften_${season}.csv`
|
||||
}
|
||||
|
||||
async function exists(p) {
|
||||
try {
|
||||
@@ -13,20 +18,36 @@ async function exists(p) {
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const cwd = process.cwd()
|
||||
const filename = 'mannschaften.csv'
|
||||
const query = getQuery(event)
|
||||
const requestedSeason = query.season ? String(query.season).trim() : ''
|
||||
|
||||
if (requestedSeason && !validateSeasonSlug(requestedSeason)) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: 'Ungueltiger Saison-Slug'
|
||||
})
|
||||
}
|
||||
|
||||
const defaultSeason = getCurrentSeasonSlug()
|
||||
const candidateFileNames = requestedSeason
|
||||
? [normalizeSeasonFilename(requestedSeason), 'mannschaften.csv']
|
||||
: [normalizeSeasonFilename(defaultSeason), 'mannschaften.csv']
|
||||
|
||||
// Prefer CMS write target first (server/data/public-data),
|
||||
// then legacy locations.
|
||||
const candidates = [
|
||||
path.join(cwd, 'server/data/public-data', filename),
|
||||
path.join(cwd, '../server/data/public-data', filename),
|
||||
path.join(cwd, '.output/server/data', filename),
|
||||
path.join(cwd, 'server/data', filename),
|
||||
path.join(cwd, '.output/public/data', filename),
|
||||
path.join(cwd, 'public/data', filename),
|
||||
path.join(cwd, '../.output/public/data', filename),
|
||||
path.join(cwd, '../public/data', filename)
|
||||
]
|
||||
const candidates = []
|
||||
for (const filename of candidateFileNames) {
|
||||
candidates.push(
|
||||
path.join(cwd, 'server/data/public-data', filename),
|
||||
path.join(cwd, '../server/data/public-data', filename),
|
||||
path.join(cwd, '.output/server/data', filename),
|
||||
path.join(cwd, 'server/data', filename),
|
||||
path.join(cwd, '.output/public/data', filename),
|
||||
path.join(cwd, 'public/data', filename),
|
||||
path.join(cwd, '../.output/public/data', filename),
|
||||
path.join(cwd, '../public/data', filename)
|
||||
)
|
||||
}
|
||||
|
||||
let csvPath = null
|
||||
for (const p of candidates) {
|
||||
|
||||
Reference in New Issue
Block a user