"use strict"; // Datenbank-Controller // Haelt die Liste der bekannten Teamnamen persistent in db.json vor, // damit sie im Adminpanel als Auswahl-Dropdown angeboten werden koennen. const fs = require('node:fs'); const path = require('node:path'); // Pfad relativ zum Modul, nicht zum Arbeitsverzeichnis, damit die Datei // unabhaengig vom Startverzeichnis immer an derselben Stelle liegt const dbFile = path.join(__dirname, '..', 'db.json'); // Liest db.json ein, faellt bei fehlender oder defekter Datei auf eine leere Liste zurueck function read() { try { const data = JSON.parse(fs.readFileSync(dbFile, 'utf-8')); if(!Array.isArray(data.teams)) data.teams = []; // Fehlender oder falscher teams-Key return data; } catch (err) { console.error("db.json konnte nicht gelesen werden, verwende leere Teamliste: ", err.message); return { teams: [] }; } } // Schreibt den uebergebenen Datensatz zurueck nach db.json function write(data) { fs.writeFileSync(dbFile, JSON.stringify(data, null, 2)); } // Returns all teams from db function getTeams() { return read().teams; } // Adds passed teamName to db if not already existing function addTeam(teamName) { const data = read(); if(!data.teams.includes(teamName) && teamName != "") { // Teamname not in db data.teams.push(teamName); write(data); } } // Deletes passed teamName from db if existing function deleteTeam(teamName) { const data = read(); if(data.teams.includes(teamName) && teamName != "") { // Teamname in db data.teams.splice(data.teams.indexOf(teamName), 1); // Delete corresponding array entry write(data); } } // Returns important values from db function getValues() { return read(); } module.exports = { getTeams, addTeam, deleteTeam, getValues }