
-- ========================================
-- Table statuts_projet
-- ========================================
CREATE TABLE statuts_projet (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(50) NOT NULL
) ENGINE=InnoDB;

-- ========================================
-- Table projets
-- ========================================
CREATE TABLE projets (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    code_ue VARCHAR(50),
    statut_id INT,
    FOREIGN KEY (statut_id) REFERENCES statuts_projet(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- ========================================
-- Table utilisateurs
-- ========================================
CREATE TABLE utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    prenom VARCHAR(100) NOT NULL,
    nom VARCHAR(100) NOT NULL,
    composante VARCHAR(100),
    numero_etudiant VARCHAR(50),
    pseudo VARCHAR(150)
) ENGINE=InnoDB;

-- ========================================
-- Table machines
-- ========================================
CREATE TABLE machines (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    description TEXT
) ENGINE=InnoDB;

-- ========================================
-- Table categories_materiaux (optionnel)
-- ========================================
CREATE TABLE categories_materiaux (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100) NOT NULL
) ENGINE=InnoDB;

-- ========================================
-- Table materiaux
-- ========================================
CREATE TABLE materiaux (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    description TEXT,
    categorie_id INT,
    FOREIGN KEY (categorie_id) REFERENCES categories_materiaux(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- ========================================
-- Table machines_materiaux (N ↔ N)
-- ========================================
CREATE TABLE machines_materiaux (
    machine_id INT NOT NULL,
    materiau_id INT NOT NULL,
    PRIMARY KEY(machine_id, materiau_id),
    FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE,
    FOREIGN KEY (materiau_id) REFERENCES materiaux(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ========================================
-- Table projets_utilisateurs (N ↔ N)
-- ========================================
CREATE TABLE projets_utilisateurs (
    projet_id INT NOT NULL,
    utilisateur_id INT NOT NULL,
    PRIMARY KEY(projet_id, utilisateur_id),
    FOREIGN KEY (projet_id) REFERENCES projets(id) ON DELETE CASCADE,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ========================================
-- Table actions
-- ========================================
CREATE TABLE actions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titre VARCHAR(255) NOT NULL,
    date_action DATE NOT NULL,
    duree DECIMAL(5,2),
    description TEXT,
    projet_id INT,
    utilisateur_id INT,
    machine_id INT,
    FOREIGN KEY (projet_id) REFERENCES projets(id) ON DELETE CASCADE,
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id) ON DELETE SET NULL,
    FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- ========================================
-- Table consommations (N ↔ 1 action)
-- ========================================
CREATE TABLE consommations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    action_id INT NOT NULL,
    materiau_id INT NOT NULL,
    quantite DECIMAL(10,2),
    unite VARCHAR(50),
    FOREIGN KEY (action_id) REFERENCES actions(id) ON DELETE CASCADE,
    FOREIGN KEY (materiau_id) REFERENCES materiaux(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ========================================
-- Table fichiers (actions et projets)
-- ========================================
CREATE TABLE fichiers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    projet_id INT,
    action_id INT,
    nom_fichier VARCHAR(255) NOT NULL,
    type_fichier VARCHAR(50),
    FOREIGN KEY (projet_id) REFERENCES projets(id) ON DELETE CASCADE,
    FOREIGN KEY (action_id) REFERENCES actions(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ========================================
-- Index utiles pour Grafana / requêtes rapides
-- ========================================
CREATE INDEX idx_actions_projet ON actions(projet_id);
CREATE INDEX idx_actions_utilisateur ON actions(utilisateur_id);
CREATE INDEX idx_consommations_materiau ON consommations(materiau_id);
CREATE INDEX idx_projets_statut ON projets(statut_id);

