Files
CPLv4.0/pages/api/cpl/updateDigitaleEingaenge.ts

98 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /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 (132 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" });
}
}