Files
CPLv4.0/pages/api/cpl/updateTdrSettingsDataAPIHandler.ts
Ismail Ali cee2780583 feat: gleichzeitige Aktualisierung von TDR-Werten über optimierten API-Handler
- API `/updateTdrSettingsDataAPIHandler` überarbeitet, um mehrere Werte in einem POST zu empfangen
- TDR-Dämpfung, Geschwindigkeit und Trigger werden nun in einem Schritt verarbeitet
- atomare Dateibearbeitung mit Bereinigung fehlerhafter Endzeilen (z. B. „12h)“)
- UI-Komponente `TdrEinstellung.tsx` angepasst auf POST mit Updates-Array
2025-05-01 14:10:53 +02:00

57 lines
1.6 KiB
TypeScript

// pages/api/cpl/updateTdrSettingsDataAPIHandler.ts
import path from "path";
import fs from "fs/promises";
export default async function handler(req, res) {
const updates = req.body?.updates;
if (!Array.isArray(updates) || updates.length === 0) {
return res.status(400).json({ error: "Missing or invalid updates array" });
}
const filePath = path.join(
process.cwd(),
"apiMockData/SERVICE/kabelueberwachungMockData.js"
);
try {
let fileContent = await fs.readFile(filePath, "utf-8");
for (const { key, slot, value } of updates) {
const regex = new RegExp(`var\\s+${key}\\s*=\\s*\\[[^\\]]*\\]\\s*;`, "m");
const match = fileContent.match(regex);
if (!match) {
console.warn(`Key "${key}" not found in file.`);
continue;
}
const arrayRaw = match[0].match(/\[(.*)\]/s)?.[1] || "";
let values = arrayRaw
.split(",")
.map((v) => v.trim())
.map((v) => (v === "" ? "0" : v))
.slice(0, 32);
values[Number(slot)] = Number(value);
const newLine = `var ${key} = [\n ${values.join(", ")}\n];`;
fileContent = fileContent.replace(regex, newLine);
}
// Bereinige kaputte Endzeilen wie ")"
fileContent = fileContent.replace(
/^\s*[\)\(a-zA-Z0-9\/\:\. ]{2,40}\s*$/gm,
""
);
await fs.writeFile(filePath, fileContent, "utf-8");
return res.status(200).json({ success: true, updated: updates.length });
} catch (err) {
console.error("API error:", err);
return res.status(500).json({ error: "Internal server error." });
}
}