-- Script pour ajouter le système de Pack Défis
-- Ce pack permet aux joueurs de rejouer les défis passés depuis janvier 2026

-- Table pour stocker les achats du pack défi
CREATE TABLE IF NOT EXISTS user_challenge_pack (
  user_id INT NOT NULL,
  purchased_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  transaction_id VARCHAR(255) DEFAULT NULL,
  price_paid DECIMAL(10,2) DEFAULT 9.99,
  PRIMARY KEY (user_id),
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Configuration pour activer/désactiver le pack dans la boutique
INSERT INTO app_config (config_key, config_value) 
VALUES ('challenge_pack_enabled', 'false')
ON DUPLICATE KEY UPDATE config_value = config_value;

-- Table pour stocker les défis passés pré-générés (janvier 2026)
-- Les défis utilisent les niveaux du catalogue avec une seed basée sur la date
CREATE TABLE IF NOT EXISTS daily_challenges (
  date_key DATE NOT NULL PRIMARY KEY,
  difficulty VARCHAR(20) DEFAULT 'medium',
  level_index INT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Générer les défis de janvier 2026 (1er au 31 janvier)
-- Utilise la même logique que getDayOfYear % CATALOG_LEVELS
INSERT IGNORE INTO daily_challenges (date_key, difficulty, level_index) VALUES
('2026-01-01', 'medium', 0),   -- Jour 1 de l'année % 200 = 1
('2026-01-02', 'medium', 1),
('2026-01-03', 'medium', 2),
('2026-01-04', 'medium', 3),
('2026-01-05', 'medium', 4),
('2026-01-06', 'medium', 5),
('2026-01-07', 'medium', 6),
('2026-01-08', 'medium', 7),
('2026-01-09', 'medium', 8),
('2026-01-10', 'medium', 9),
('2026-01-11', 'medium', 10),
('2026-01-12', 'medium', 11),
('2026-01-13', 'medium', 12),
('2026-01-14', 'medium', 13),
('2026-01-15', 'medium', 14),
('2026-01-16', 'medium', 15),
('2026-01-17', 'medium', 16),
('2026-01-18', 'medium', 17),
('2026-01-19', 'medium', 18),
('2026-01-20', 'medium', 19),
('2026-01-21', 'medium', 20),
('2026-01-22', 'medium', 21),
('2026-01-23', 'medium', 22),
('2026-01-24', 'medium', 23),
('2026-01-25', 'medium', 24),
('2026-01-26', 'medium', 25),
('2026-01-27', 'medium', 26),
('2026-01-28', 'medium', 27),
('2026-01-29', 'medium', 28),
('2026-01-30', 'medium', 29),
('2026-01-31', 'medium', 30);
