- API-Handler für /api/cpl/getAnalogInputsHistory überarbeitet - `zeitraum` (DIA0, DIA1, DIA2) und `eingang` (1–8) sind jetzt Pflichtfelder - Bei fehlenden oder ungültigen Parametern strukturierte Fehlerantwort mit Beispielen - Daten werden nun gezielt pro Eingang und Zeitraum geladen (z. B. AE3 + DIA1) - Bessere Fehlerbehandlung bei nicht vorhandenen Dateien
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
// /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<unknown>
|
|
) {
|
|
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}.`,
|
|
});
|
|
}
|
|
}
|