// services/fetchKvzDataService.ts import { KvzData } from "../pages/api/kvz/data"; /** * Überprüft, ob wir in der Entwicklungsumgebung sind */ const isDevelopment = process.env.NODE_ENV === "development"; /** * Holt KVZ-Daten vom Server * In der Entwicklungsumgebung: API-Route verwenden * In der Produktionsumgebung: Direkt JSON-Datei laden */ export const fetchKvzData = async (): Promise => { try { let response: Response; if (isDevelopment) { // Entwicklungsumgebung: API-Route verwenden response = await fetch("/api/kvz/data"); } else { // Produktionsumgebung: Direkt JSON-Datei aus public laden response = await fetch("/CPL/kvz/kvzData.json"); } if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data: KvzData = await response.json(); return data; } catch (error) { console.error("Fehler beim Laden der KVZ-Daten:", error); throw error; } }; /** * Aktualisiert KVZ-Einstellungen auf dem Server * In der Entwicklungsumgebung: API-Route verwenden * In der Produktionsumgebung: Nur lokale Aktualisierung (keine Persistierung) */ export const updateKvzSettings = async ( updates: Array<{ key: "kvzPresence" | "kvzActive" | "kvzStatus"; slot?: number; ledIndex?: number; value: number; }> ): Promise => { try { if (isDevelopment) { // Entwicklungsumgebung: API-Route verwenden const response = await fetch("/api/kvz/updateSettings", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ updates }), }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data: KvzData = await response.json(); return data; } else { // Produktionsumgebung: Warnung ausgeben und aktuelle Daten zurückgeben console.warn( "KVZ-Updates sind in der Produktionsumgebung nicht verfügbar. Änderungen werden nur lokal gespeichert." ); // Aktuelle Daten laden und zurückgeben return await fetchKvzData(); } } catch (error) { console.error("Fehler beim Update der KVZ-Einstellungen:", error); throw error; } };