// /pages/api/cpl/getAnalogInputsHistory.ts import path from "path"; import fs from "fs/promises"; import type { NextApiRequest, NextApiResponse } from "next"; const erlaubteZeitraeume = ["DIA0", "DIA1", "DIA2"]; const erlaubteEingaenge = [1, 2, 3, 4, 5, 6, 7, 8]; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { const { zeitraum, eingang } = req.query; const zeitraumKey = typeof zeitraum === "string" && erlaubteZeitraeume.includes(zeitraum) ? zeitraum : null; const eingangId = typeof eingang === "string" && !isNaN(Number(eingang)) ? Number(eingang) : null; // ❌ Fehlerhafte Anfrage if (!zeitraumKey || !eingangId || !erlaubteEingaenge.includes(eingangId)) { return res.status(400).json({ error: "❌ Ungültige oder unvollständige Anfrage.", erwartet: { zeitraum: "Pflichtfeld. Erlaubt: DIA0 | DIA1 | DIA2", eingang: "Pflichtfeld. Erlaubt: 1 bis 8 (entspricht AE1 bis AE8)", }, beispiele: [ "/api/cpl/getAnalogInputsHistory?zeitraum=DIA1&eingang=3", "/api/cpl/getAnalogInputsHistory?zeitraum=DIA2&eingang=7", "http://localhost:3000/api/cpl/getAnalogInputsHistory?eingang=1&zeitraum=DIA0", ], hinweis: "Die Antwort enthält ein Array mit Messwertobjekten für den gewählten Eingang und Zeitraum.", }); } try { const filePath = path.join( process.cwd(), "mocks", "device-cgi-simulator", "chartsData", "analogInputs", `${eingangId}`, `${zeitraumKey}.json` ); const fileContent = await fs.readFile(filePath, "utf-8"); const daten = JSON.parse(fileContent); res.status(200).json({ eingang: eingangId, zeitraum: zeitraumKey, beschreibung: zeitraumKey === "DIA0" ? "Alle Messwerte" : zeitraumKey === "DIA1" ? "Stündlich aggregierte Messwerte" : "Täglich aggregierte Messwerte", daten, }); } catch (error) { console.error( `❌ Datei nicht gefunden für Eingang ${eingangId} und Zeitraum ${zeitraumKey}:`, error ); res.status(404).json({ error: `Keine Daten gefunden für Eingang ${eingangId} mit Zeitraum ${zeitraumKey}.`, }); } }