-- Structure de la base de données
CREATE DATABASE IF NOT EXISTS formation_leadership;
USE formation_leadership;

-- Table utilisateurs
CREATE TABLE IF NOT EXISTS utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    nom VARCHAR(100),
    prenom VARCHAR(100),
    role ENUM('etudiant', 'enseignant') DEFAULT 'etudiant',
    est_actif BOOLEAN DEFAULT TRUE,
    date_inscription DATETIME DEFAULT CURRENT_TIMESTAMP,
    derniere_connexion DATETIME
);

-- Table réponses des étudiants
CREATE TABLE IF NOT EXISTS reponses_etudiant (
    id INT AUTO_INCREMENT PRIMARY KEY,
    utilisateur_id INT NOT NULL,
    exercice VARCHAR(50) NOT NULL,
    question VARCHAR(100) NOT NULL,
    reponse TEXT,
    date_sauvegarde DATETIME DEFAULT CURRENT_TIMESTAMP,
    derniere_modification DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id) ON DELETE CASCADE,
    UNIQUE KEY unique_reponse (utilisateur_id, exercice, question)
);

-- Table notes enseignant
CREATE TABLE IF NOT EXISTS notes_enseignant (
    id INT AUTO_INCREMENT PRIMARY KEY,
    utilisateur_id INT NOT NULL,
    note TEXT,
    date_creation DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id) ON DELETE CASCADE
);

-- Table sessions utilisateurs
CREATE TABLE IF NOT EXISTS sessions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    utilisateur_id INT NOT NULL,
    token VARCHAR(255) NOT NULL,
    ip_address VARCHAR(45),
    user_agent TEXT,
    date_connexion DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id) ON DELETE CASCADE
);

-- Insertion d'un compte enseignant par défaut (à modifier après création)
INSERT INTO utilisateurs (email, password, nom, role) VALUES 
('enseignant@formation.com', '$2y$10$votre_hash_ici', 'Enseignant', 'enseignant');
-- Pour générer le hash: password_hash('votre_mot_de_passe', PASSWORD_DEFAULT);