-- Création de la base
CREATE DATABASE IF NOT EXISTS bijouterie
  DEFAULT CHARACTER SET utf8mb4
  DEFAULT COLLATE utf8mb4_unicode_ci;

USE bijouterie;

-- Table des pays
CREATE TABLE IF NOT EXISTS pays (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(100) NOT NULL UNIQUE
);

-- Table des thématiques hiérarchiques
CREATE TABLE IF NOT EXISTS annuaire_thematiques (
  id INT NOT NULL AUTO_INCREMENT,
  nom VARCHAR(255) NOT NULL,
  slug VARCHAR(255) NOT NULL UNIQUE,
  parent_id INT DEFAULT NULL,
  ordre INT DEFAULT 0,
  PRIMARY KEY (id),
  FOREIGN KEY (parent_id) REFERENCES annuaire_thematiques(id) ON DELETE SET NULL,
  INDEX (parent_id)
);

-- Table des professionnels
CREATE TABLE IF NOT EXISTS annuaire_professionnels (
  id INT NOT NULL AUTO_INCREMENT,
  nom VARCHAR(255) NOT NULL,
  url VARCHAR(500),
  adresse VARCHAR(255),
  pays_id INT DEFAULT NULL,
  snapshot VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (pays_id) REFERENCES pays(id) ON DELETE SET NULL,
  INDEX (pays_id)
);

-- Table de liaison professionnels <-> thématiques
CREATE TABLE IF NOT EXISTS annuaire_professionnels_thematiques (
  id INT AUTO_INCREMENT PRIMARY KEY,
  professionnel_id INT NOT NULL,
  thematique_id INT NOT NULL,
  FOREIGN KEY (professionnel_id) REFERENCES annuaire_professionnels(id) ON DELETE CASCADE,
  FOREIGN KEY (thematique_id) REFERENCES annuaire_thematiques(id) ON DELETE CASCADE,
  INDEX (professionnel_id),
  INDEX (thematique_id),
  UNIQUE (professionnel_id, thematique_id)
);


CREATE TABLE IF NOT EXISTS annuaire_avis (
  id INT AUTO_INCREMENT PRIMARY KEY,
  professionnel_id INT NOT NULL,
  nom VARCHAR(100) NOT NULL,
  email VARCHAR(150) NOT NULL,
  commentaire TEXT NOT NULL,
  note TINYINT UNSIGNED NOT NULL CHECK (note BETWEEN 1 AND 5),
  date_creation DATETIME DEFAULT CURRENT_TIMESTAMP,
  est_valide BOOLEAN DEFAULT FALSE,
  FOREIGN KEY (professionnel_id) REFERENCES annuaire_professionnels(id) ON DELETE CASCADE,
  INDEX (professionnel_id),
  INDEX (est_valide)
);

ALTER TABLE annuaire_professionnels ADD COLUMN logo VARCHAR(255) DEFAULT NULL;
ALTER TABLE annuaire_professionnels
  ADD COLUMN telephone VARCHAR(50) DEFAULT NULL,
  ADD COLUMN email VARCHAR(255) DEFAULT NULL,
  ADD COLUMN description_longue TEXT DEFAULT NULL,