-- =====================================================
-- TDN - TOURNOI DE NOEL
-- Base de données
-- =====================================================




-- =====================================================
-- CATEGORIES
-- =====================================================

CREATE TABLE categories
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    libelle VARCHAR(50) NOT NULL
);

INSERT INTO categories(libelle)
VALUES
('U11'),
('U13');

-- =====================================================
-- EQUIPES
-- =====================================================

CREATE TABLE equipes
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    nom VARCHAR(150) NOT NULL,

    ville VARCHAR(100),

    logo VARCHAR(255),

    categorie_id INT NOT NULL,

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (categorie_id)
        REFERENCES categories(id)
        ON DELETE CASCADE
);

-- =====================================================
-- JOUEURS
-- =====================================================

CREATE TABLE joueurs
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    equipe_id INT NOT NULL,

    nom VARCHAR(150) NOT NULL,

    numero INT,

    licence VARCHAR(50),

    poste ENUM(
        'Gardien',
        'Défenseur',
        'Milieu',
        'Attaquant'
    ) DEFAULT 'Milieu',

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (equipe_id)
        REFERENCES equipes(id)
        ON DELETE CASCADE
);

-- =====================================================
-- POULES
-- =====================================================

CREATE TABLE poules
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    nom VARCHAR(10) NOT NULL,

    categorie_id INT NOT NULL,

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (categorie_id)
        REFERENCES categories(id)
        ON DELETE CASCADE
);

-- =====================================================
-- EQUIPES / POULES
-- =====================================================

CREATE TABLE equipe_poule
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    equipe_id INT NOT NULL,

    poule_id INT NOT NULL,

    UNIQUE KEY uq_equipe_poule
    (
        equipe_id,
        poule_id
    ),

    FOREIGN KEY (equipe_id)
        REFERENCES equipes(id)
        ON DELETE CASCADE,

    FOREIGN KEY (poule_id)
        REFERENCES poules(id)
        ON DELETE CASCADE
);

-- =====================================================
-- MATCHS JOUR 1
-- =====================================================

CREATE TABLE matchs
(
    id INT AUTO_INCREMENT PRIMARY KEY,

    categorie_id INT NOT NULL,

    poule_id INT NOT NULL,

    equipe_a_id INT NOT NULL,

    equipe_b_id INT NOT NULL,

    date_match DATE NOT NULL,

    heure_debut TIME NOT NULL,

    heure_fin TIME NOT NULL,

    score_a INT NULL,

    score_b INT NULL,

    statut ENUM(
        'A_JOUER',
        'EN_COURS',
        'TERMINE'
    ) DEFAULT 'A_JOUER',

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (categorie_id)
        REFERENCES categories(id),

    FOREIGN KEY (poule_id)
        REFERENCES poules(id),

    FOREIGN KEY (equipe_a_id)
        REFERENCES equipes(id),

    FOREIGN KEY (equipe_b_id)
        REFERENCES equipes(id)
);