// /pages/api/cpl/updateDigitaleEingaenge.ts import type { NextApiRequest, NextApiResponse } from "next"; import path from "path"; import fs from "fs"; // WICHTIG: Der Mock-Datenpfad const mockFilePath = path.join( process.cwd(), "apiMockData", "SERVICE", "digitaleEingaengeMockData.js" ); // Funktion zum Parsen des JS-Datei-Inhalts in ein eval-fähiges Objekt function extractMockData(raw: string) { const context = {}; const func = new Function( "context", ` with (context) { ${raw} return { win_de_label, win_de_invert, win_de_state, win_de_counter, win_de_time_filter, win_de_weighting, win_de_counter_active, win_de_offline }; } ` ); return func({}); } export default async function handler( req: NextApiRequest, res: NextApiResponse ) { if (req.method !== "POST") { return res.status(405).json({ error: "Only POST supported" }); } try { const { id, name, invertierung, filterzeit, gewichtung, zaehlerAktiv } = req.body; if (typeof id !== "number" || id < 1 || id > 32) { return res.status(400).json({ error: "Ungültige ID (1–32 erlaubt)" }); } const rawContent = fs.readFileSync(mockFilePath, "utf-8"); const data = extractMockData(rawContent); // Update der Daten if (typeof name === "string") data.win_de_label[id - 1] = name; if (typeof invertierung === "number") data.win_de_invert[id - 1] = invertierung; if (typeof filterzeit === "number") data.win_de_time_filter[id - 1] = filterzeit; if (typeof gewichtung === "number") data.win_de_weighting[id - 1] = gewichtung; if (typeof zaehlerAktiv === "number") data.win_de_counter_active[id - 1] = zaehlerAktiv; if (typeof invertierung === "number") data.win_de_invert[id - 1] = invertierung; // Erzeuge neuen Dateiinhalt const newContent = ` // auto-generated from update API var win_de_state = ${JSON.stringify(data.win_de_state, null, 2)}; var win_de_invert = ${JSON.stringify(data.win_de_invert, null, 2)}; var win_de_counter = ${JSON.stringify(data.win_de_counter, null, 2)}; var win_de_time_filter = ${JSON.stringify(data.win_de_time_filter, null, 2)}; var win_de_weighting = ${JSON.stringify(data.win_de_weighting, null, 2)}; var win_de_counter_active = ${JSON.stringify( data.win_de_counter_active, null, 2 )}; var win_de_offline = ${JSON.stringify(data.win_de_offline, null, 2)}; var win_de_label = ${JSON.stringify(data.win_de_label, null, 2)}; `; fs.writeFileSync(mockFilePath, newContent, "utf-8"); return res .status(200) .json({ message: "Update erfolgreich", id, name, invertierung }); } catch (err: any) { console.error("Fehler beim Schreiben:", err); return res.status(500).json({ error: "Update fehlgeschlagen" }); } }