-- CCLP Masters Turnier Datenbankstruktur
-- BO3 Best of Three mit Ban/Pick System

-- Haupttabelle für alle Matches
CREATE TABLE IF NOT EXISTS `cclp_masters_matches` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `spieler1_id` int(11) NOT NULL,           -- Spieler 1 (höher im Bracket)
    `spieler2_id` int(11) NOT NULL,           -- Spieler 2
    `runde` enum('16er', '8er', '4er', 'finale') NOT NULL,
    `bracket_position` int(11) NOT NULL,      -- Position im Bracket für Ban-Reihenfolge
    `created_by` int(11) NOT NULL,            -- Wer das Match erstellt hat
    `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
    `gespielt_am` datetime NULL,              -- Wann gespielt wurde
    `status` enum('entwurf', 'wartend_best', 'bestaetigt', 'wartend_pruefung', 'geprueft', 'abgelehnt') DEFAULT 'entwurf',
    `sieger_id` int(11) NULL,                 -- Wer das Match gewonnen hat
    `notes` text NULL,                        -- Zusätzliche Notizen
    PRIMARY KEY (`id`),
    KEY `spieler1_id` (`spieler1_id`),
    KEY `spieler2_id` (`spieler2_id`),
    KEY `created_by` (`created_by`),
    KEY `status` (`status`),
    FOREIGN KEY (`spieler1_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE,
    FOREIGN KEY (`spieler2_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE,
    FOREIGN KEY (`created_by`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabelle für gebannte Maps pro Match
CREATE TABLE IF NOT EXISTS `cclp_masters_bans` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `match_id` int(11) NOT NULL,
    `spieler_id` int(11) NOT NULL,            -- Welcher Spieler gebannt hat
    `map_name` varchar(255) NOT NULL,         -- Name der gebannten Map
    `ban_order` int(11) NOT NULL,             -- 1-4 (Reihenfolge der Bans)
    `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `match_id` (`match_id`),
    KEY `spieler_id` (`spieler_id`),
    FOREIGN KEY (`match_id`) REFERENCES `cclp_masters_matches` (`id`) ON DELETE CASCADE,
    FOREIGN KEY (`spieler_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabelle für die einzelnen gespielten Games
CREATE TABLE IF NOT EXISTS `cclp_masters_games` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `match_id` int(11) NOT NULL,
    `game_number` int(11) NOT NULL,           -- 1, 2, oder 3 (Decider)
    `map_name` varchar(255) NOT NULL,         -- Gespielte Map
    `picked_by` int(11) NOT NULL,             -- Welcher Spieler die Map gepickt hat
    `spieler1_score` int(11) DEFAULT 0,      -- Punkte Spieler 1
    `spieler2_score` int(11) DEFAULT 0,      -- Punkte Spieler 2
    `winner_id` int(11) NULL,                 -- Wer das Game gewonnen hat
    `replay_path` varchar(500) NULL,          -- Pfad zum Replay
    `radmin_link` varchar(500) NULL,          -- RADMIN Link falls vorhanden
    `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `match_game` (`match_id`, `game_number`),
    KEY `match_id` (`match_id`),
    KEY `picked_by` (`picked_by`),
    KEY `winner_id` (`winner_id`),
    FOREIGN KEY (`match_id`) REFERENCES `cclp_masters_matches` (`id`) ON DELETE CASCADE,
    FOREIGN KEY (`picked_by`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE,
    FOREIGN KEY (`winner_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabelle für die Map-Pools (alle verfügbaren Maps)
CREATE TABLE IF NOT EXISTS `cclp_masters_mappool` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `map_name` varchar(255) NOT NULL,
    `map_display_name` varchar(255) NOT NULL, -- Angezeigter Name
    `is_active` tinyint(1) DEFAULT 1,
    `sort_order` int(11) DEFAULT 0,
    PRIMARY KEY (`id`),
    UNIQUE KEY `map_name` (`map_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Standard Map-Pool befüllen
INSERT INTO `cclp_masters_mappool` (`map_name`, `map_display_name`, `sort_order`) VALUES
('cclp_tm_neighborshot_s6', 'CCLP TM Neighborshot S6', 1),
('cclp_tm_coast_to_coast_s8', 'CCLP_TM_Coast_to_Coast_S8', 2),
('cclp_tm_bergfest_s3', 'CCLP TM Bergfest S3', 3),
('cclp_tm_andromeda_s9', 'CCLP TM Andromeda S9', 4),
('cclp_tm_point_of_eternity_s7', 'CCLP TM Point of Eternity S7', 5),
('cclp_tm_critical_situation_s9', 'CCLP TM Critical Situation S9', 6),
('cclp_tm_butterfly_feelings_s9', 'CCLP TM Butterfly Feelings S9', 7);

-- Tabelle für Turnier-Bracket Informationen
CREATE TABLE IF NOT EXISTS `cclp_masters_bracket` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `spieler1_id` int(11) NOT NULL,
    `spieler2_id` int(11) NOT NULL,
    `runde` enum('16er', '8er', '4er', 'finale') NOT NULL,
    `bracket_position` int(11) NOT NULL,      -- Position für Ban-Reihenfolge
    `winner_goes_to` int(11) NULL,            -- ID des nächsten Matches (Bracket)
    `is_active` tinyint(1) DEFAULT 1,
    PRIMARY KEY (`id`),
    KEY `spieler1_id` (`spieler1_id`),
    KEY `spieler2_id` (`spieler2_id`),
    KEY `runde` (`runde`),
    FOREIGN KEY (`spieler1_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE,
    FOREIGN KEY (`spieler2_id`) REFERENCES `Spieler` (`SpielerID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
