-- #migration

-- Actions incluses dans un parcours (pré-construits ou sur-mesure)
CREATE TABLE IF NOT EXISTS parcours_actions (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  parcours_id   VARCHAR(20) NOT NULL,   -- ex: PAR-01 ou UP-{user_id}-{timestamp} pour sur-mesure
  card_id       VARCHAR(20) NOT NULL,   -- référence catalogue (cards.card_id)
  position      TINYINT NOT NULL DEFAULT 1,
  INDEX idx_parcours (parcours_id),
  INDEX idx_card (card_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Avancement action par action pour chaque utilisateur
CREATE TABLE IF NOT EXISTS user_parcours_actions (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  user_id       VARCHAR(40) NOT NULL,
  parcours_id   VARCHAR(20) NOT NULL,
  card_id       VARCHAR(20) NOT NULL,
  status        ENUM('pending','in_progress','done') DEFAULT 'pending',
  done_at       DATETIME NULL,
  note          TEXT NULL,
  INDEX idx_up (user_id, parcours_id),
  INDEX idx_card (card_id),
  UNIQUE KEY uniq_upa (user_id, parcours_id, card_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Préférences de rappel par utilisateur
CREATE TABLE IF NOT EXISTS user_reminder_prefs (
  user_id           VARCHAR(40) NOT NULL PRIMARY KEY,
  email_enabled     TINYINT(1) DEFAULT 1,
  email_frequency   ENUM('daily','weekly','never') DEFAULT 'weekly',
  email_day         TINYINT DEFAULT 1,   -- 1=lundi … 7=dimanche
  email_hour        TINYINT DEFAULT 8,   -- heure locale (0-23)
  tg_enabled        TINYINT(1) DEFAULT 0,
  tg_chat_id        VARCHAR(30) NULL,
  tg_frequency      ENUM('daily','weekly','never') DEFAULT 'weekly',
  inactivity_email  TINYINT(1) DEFAULT 1,   -- relance si X jours sans activité
  inactivity_days   TINYINT DEFAULT 5,
  inactivity_tg     TINYINT(1) DEFAULT 0,
  updated_at        DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Journal des rappels envoyés (évite les doublons)
CREATE TABLE IF NOT EXISTS reminder_log (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  user_id     VARCHAR(40) NOT NULL,
  type        ENUM('weekly_email','weekly_wa','inactivity_email','inactivity_wa','milestone') NOT NULL,
  sent_at     DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_user_type (user_id, type, sent_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Parcours sur-mesure (métadonnées)
CREATE TABLE IF NOT EXISTS user_custom_parcours (
  parcours_id   VARCHAR(30) NOT NULL PRIMARY KEY,  -- UP-{user_id}-{ts}
  user_id       VARCHAR(40) NOT NULL,
  title         VARCHAR(200) NOT NULL,
  goal          TEXT NULL,
  goal_deadline DATE NULL,
  categories    TEXT NULL,   -- JSON des catégories choisies
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
