-- ALL SQL STATEMENTS FOR PROJECT "NexusControl"
-- Diese Datei enthält alle CREATE, ALTER, INSERT, UPDATE, DELETE und SELECT Statements, die im Projekt verwendet werden.

-- Tabellenstruktur (CREATE TABLE)

-- Beispiel: Benutzer
CREATE TABLE IF NOT EXISTS Benutzer (
    BenutzerID INT AUTO_INCREMENT PRIMARY KEY,
    Benutzername VARCHAR(50) NOT NULL,
    Passwort VARCHAR(255) NOT NULL,
    Rolle VARCHAR(20) NOT NULL
);

-- Beispiel: spielmeldungen
CREATE TABLE IF NOT EXISTS spielmeldungen (
    id INT AUTO_INCREMENT PRIMARY KEY,
    spieler1_id INT NOT NULL,
    spieler2_id INT NOT NULL,
    datum DATETIME NOT NULL,
    liga_spieler1 INT,
    general_spieler1 INT,
    liga_spieler2 INT,
    general_spieler2 INT,
    status VARCHAR(50),
    streitfall_beweis TEXT,
    streitfall_kommentar TEXT,
    map_id INT,
    spielstart_verzoegerung INT DEFAULT 0
);

-- Beispiel: liga_anmeldungen
CREATE TABLE IF NOT EXISTS liga_anmeldungen (
    id INT AUTO_INCREMENT PRIMARY KEY,
    liga_id INT NOT NULL,
    benutzer_id INT NOT NULL,
    angemeldet_am DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Beispiel: elo_preview_history
CREATE TABLE IF NOT EXISTS elo_preview_history (
    id INT AUTO_INCREMENT PRIMARY KEY,
    spieler_id INT NOT NULL,
    liga_id INT NOT NULL,
    elo_preview INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Beispiel: weitere Tabellen siehe Einzeldateien im assets/sql Ordner

-- ALTER TABLE Beispiele
ALTER TABLE spieler_ligen ADD COLUMN elo_preview INT DEFAULT NULL;

-- INSERT Statements
INSERT INTO Benutzer (Benutzername, Passwort, Rolle) VALUES ('admin', 'hash', 'admin');
INSERT INTO spielmeldungen (spieler1_id, spieler2_id, datum, liga_spieler1, general_spieler1, liga_spieler2, general_spieler2, status) VALUES (?, ?, NOW(), ?, ?, ?, ?, ?);
INSERT INTO admin_nachrichten (user_id, map_id, typ, nachricht, erledigt, erstellt_am) VALUES (?, ?, ?, ?, 0, NOW());
INSERT INTO spielanmeldungen (liga_id, spieler1_id, spieler2_id, map_id, zeitfenster, anmeldungszeit, spielbeginn, spielstart_verzoegerung) VALUES (?, ?, ?, ?, ?, ?, ?, ?);

-- UPDATE Statements
UPDATE spielmeldungen SET status = '' WHERE id = ?;
UPDATE spielmeldungen SET streitfall_beweis=?, streitfall_kommentar=? WHERE id=?;
UPDATE spieler_ligen SET elo_preview = ? WHERE spieler_id = ? AND liga_id = ?;
UPDATE spieler_ligen SET elo = ? WHERE spieler_id = ? AND liga_id = ?;
UPDATE Spieler SET Elo = ? WHERE SpielerID = ?;
UPDATE Spieler SET Siege = Siege + 1 WHERE SpielerID = ?;
UPDATE Spieler SET Niederlage = Niederlage + 1 WHERE SpielerID = ?;
UPDATE Spieler SET Unentschieden = Unentschieden + 1 WHERE SpielerID = ?;
UPDATE Spieler SET GesamtKarten = GesamtKarten + 1 WHERE SpielerID IN (?, ?);
UPDATE spieler_ligen SET siege = siege + 1, Spiele = Spiele + 1 WHERE spieler_id = ? AND liga_id = ?;
UPDATE spieler_ligen SET niederlage = niederlage + 1, Spiele = Spiele + 1 WHERE spieler_id = ? AND liga_id = ?;
UPDATE spieler_ligen SET unentschieden = unentschieden + 1, Spiele = Spiele + 1 WHERE spieler_id = ? AND liga_id = ?;
UPDATE admin_nachrichten SET erledigt=1 WHERE id=?;

-- DELETE Statements
DELETE FROM ... WHERE ... ; -- (bitte spezifisch ergänzen)

-- SELECT Statements
SELECT id, name FROM leagues ORDER BY name;
SELECT s.*, l.name AS liga_name, m.name AS map_name, sp1.Name AS spieler1_name, sp2.Name AS spieler2_name FROM spielmeldungen s ... ;
SELECT status, bestaetigungsfrist, streitfall_beweis, streitfall_kommentar, id, spieler1_id FROM spielmeldungen WHERE spieler1_id=? ORDER BY id DESC LIMIT 1;
SELECT es.base_elo FROM leagues l JOIN elo_settings es ON l.elo_settings_id = es.id WHERE l.id = ?;
SELECT * FROM spielanmeldungen WHERE ... ;
SELECT name FROM maps WHERE id = ?;
SELECT s.SpielerID, s.Name FROM Spieler s INNER JOIN spieler_ligen sl ON sl.spieler_id = s.SpielerID WHERE s.BenutzerID = ? AND sl.liga_id = ?;
SELECT MapID, Name FROM Map WHERE SpielID = 1 ORDER BY Name;

-- Weitere Statements bitte aus dem Code nachtragen!
-- Diese Datei kann als Vorlage für ein SQL-Review oder zur Migration/Neuanlage dienen.
