-- Tabelle für Spielzeiten erstellen
CREATE TABLE IF NOT EXISTS `spielzeiten` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `spiel_id` int(11) DEFAULT NULL,
  `liga_id` int(11) NOT NULL,
  `spieler1_id` int(11) NOT NULL,
  `spieler2_id` int(11) NOT NULL,
  `start_zeit` datetime NOT NULL,
  `ende_zeit` datetime NOT NULL,
  `dauer_minuten` int(11) GENERATED ALWAYS AS (TIMESTAMPDIFF(MINUTE, start_zeit, ende_zeit)) STORED,
  `erfasst_durch` int(11) NOT NULL,
  `erfasst_am` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `kommentar` text,
  `map_id` int(11) NULL,
  `fraktion1` varchar(50) NULL,
  `fraktion2` varchar(50) NULL,
  PRIMARY KEY (`id`),
  KEY `spiel_id` (`spiel_id`),
  KEY `liga_id` (`liga_id`),
  KEY `spieler1_id` (`spieler1_id`),
  KEY `spieler2_id` (`spieler2_id`),
  KEY `erfasst_durch` (`erfasst_durch`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Spalten in der Spiele-Tabelle aktualisieren, falls sie nicht existieren
ALTER TABLE `Spiele`
  ADD COLUMN IF NOT EXISTS `start_zeit` datetime DEFAULT NULL,
  ADD COLUMN IF NOT EXISTS `ende_zeit` datetime DEFAULT NULL,
  ADD COLUMN IF NOT EXISTS `dauer_minuten` int(11) GENERATED ALWAYS AS (TIMESTAMPDIFF(MINUTE, start_zeit, ende_zeit)) STORED;

-- Index für bessere Performance (robust, nur wenn noch nicht vorhanden)
SET @idx_exists := (
  SELECT COUNT(1) FROM information_schema.statistics 
  WHERE table_schema = DATABASE() 
    AND table_name = 'Spiele' 
    AND index_name = 'idx_spiele_zeit'
);
SET @sql := IF(@idx_exists = 0, 'ALTER TABLE `Spiele` ADD INDEX `idx_spiele_zeit` (`start_zeit`, `ende_zeit`);', 'SELECT 1;');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

-- Zusätzliche Spalten in spielzeiten (robust)
ALTER TABLE `spielzeiten`
  ADD COLUMN IF NOT EXISTS `map_id` int(11) NULL,
  ADD COLUMN IF NOT EXISTS `fraktion1` varchar(50) NULL,
  ADD COLUMN IF NOT EXISTS `fraktion2` varchar(50) NULL;

-- Index auf map_id, falls nicht vorhanden
SET @idx_exists2 := (
  SELECT COUNT(1) FROM information_schema.statistics 
  WHERE table_schema = DATABASE() 
    AND table_name = 'spielzeiten' 
    AND index_name = 'idx_spielzeiten_map'
);
SET @sql2 := IF(@idx_exists2 = 0, 'ALTER TABLE `spielzeiten` ADD INDEX `idx_spielzeiten_map` (`map_id`);', 'SELECT 1;');
PREPARE stmt2 FROM @sql2; EXECUTE stmt2; DEALLOCATE PREPARE stmt2;
