import mysql from "mysql2"; import dotenv from "dotenv"; dotenv.config(); // Ein einzelner Pool reicht; der zweite Pool benutzte fälschlich DB_TABLE als Datenbank const pool = mysql .createPool({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, }) .promise(); export async function query(params) { const [result] = await pool.query( "UPDATE lose SET vorname = ?, nachname = ?, adresse = ?, plz = ?, email = ? WHERE losnummer = ? AND vorname IS NULL AND nachname IS NULL AND adresse IS NULL AND plz IS NULL AND email IS NULL", [ params.vorname, params.nachname, params.adresse, params.plz, params.email, params.losnummer, ] ); if (result.affectedRows > 0) { console.log("Update successful:", result); return { success: true }; } else { return { success: false }; } } export async function loginAdmin(username, password) { const [rows] = await pool.query( "SELECT * FROM admin_user WHERE username = ? AND password = ?", [username, password] ); if (rows.length > 0) return { success: true }; return { success: false }; } export async function getTableData() { const [result] = await pool.query("SELECT * FROM lose"); if (result.length > 0) { return { success: true, data: result }; } return { success: false }; } export async function createEntry(data) { if (!Array.isArray(data) || data.length === 0) return true; // Normalize values to strings and unique them to reduce duplicates const values = Array.from( new Set(data.map((v) => String(v).trim()).filter(Boolean)) ); // Prepare bulk insert values [[v1],[v2],...] const rows = values.map((v) => [v]); try { // Use INSERT IGNORE to skip duplicates on UNIQUE(losnummer) const [result] = await pool.query( "INSERT IGNORE INTO lose (losnummer) VALUES ?", [rows] ); // result.affectedRows may be less than rows.length if duplicates existed return true; } catch (e) { console.error("Bulk insert failed", e); return false; } } export async function removeEntries(losnummern) { let { status } = { status: true }; for (const losnummer of losnummern) { const [result] = await pool.query("DELETE FROM lose WHERE losnummer = ?", [ losnummer, ]); if (result.affectedRows > 0) { status = true; } else { status = false; break; } } return status; } export async function saveRow(payload) { const [result] = await pool.query( "UPDATE lose SET vorname = ?, nachname = ?, adresse = ?, plz = ?, email = ? WHERE losnummer = ?", [ payload.vorname, payload.nachname, payload.adresse, payload.plz, payload.email, payload.losnummer, ] ); if (result.affectedRows > 0) { return { success: true }; } else { return { success: false }; } }