Files
harheimertc/server/api/termine.get.js

63 lines
1.5 KiB
JavaScript

import { promises as fs } from 'fs'
import path from 'path'
export default defineEventHandler(async (event) => {
try {
const cwd = process.cwd()
// In production (.output/server), working dir is .output
let csvPath
if (cwd.endsWith('.output')) {
csvPath = path.join(cwd, '../public/data/termine.csv')
} else {
csvPath = path.join(cwd, 'public/data/termine.csv')
}
const csv = await fs.readFile(csvPath, 'utf-8')
const lines = csv.split('\n').filter(line => line.trim() !== '')
if (lines.length < 2) {
return { success: true, termine: [] }
}
const termine = []
for (let i = 1; i < lines.length; i++) {
const values = []
let current = ''
let inQuotes = false
for (let j = 0; j < lines[i].length; j++) {
const char = lines[i][j]
if (char === '"') {
inQuotes = !inQuotes
} else if (char === ',' && !inQuotes) {
values.push(current.trim())
current = ''
} else {
current += char
}
}
values.push(current.trim())
if (values.length >= 4) {
termine.push({
datum: values[0],
titel: values[1],
beschreibung: values[2],
kategorie: values[3]
})
}
}
return {
success: true,
termine
}
} catch (error) {
console.error('Fehler beim Laden der Termine:', error)
return { success: true, termine: [] }
}
})