-- =====================================================================
--  MÓDULO TRIVIA EN VIVO CON QR — migración ADITIVA (prefijo trivia_)
--  Gana el primero que responde correctamente antes de que acabe el tiempo.
--  Ejecutar UNA vez en phpMyAdmin. No modifica nada existente.
-- =====================================================================
SET NAMES utf8mb4;
USE `re123_gigantes`;

-- Trivias (una pregunta por trivia)
CREATE TABLE IF NOT EXISTS `trivias` (
  `id`                    INT(11) NOT NULL AUTO_INCREMENT,
  `codigo_publico`        VARCHAR(20) NOT NULL,
  `nombre`                VARCHAR(200) DEFAULT NULL,
  `pregunta`              TEXT NOT NULL,
  `tiempo_segundos`       INT(11) NOT NULL DEFAULT 30,
  `estado`                ENUM('borrador','activa','finalizada') NOT NULL DEFAULT 'borrador',
  `ganador_respuesta_id`  INT(11) DEFAULT NULL,
  `mostrar_correcta`      TINYINT(1) NOT NULL DEFAULT 1,
  `mostrar_resultados`    TINYINT(1) NOT NULL DEFAULT 1,
  `logo`                  VARCHAR(255) DEFAULT NULL,
  `fondo_tipo`            ENUM('animacion','color','imagen','video') NOT NULL DEFAULT 'animacion',
  `fondo_archivo`         VARCHAR(255) DEFAULT NULL,
  `fondo_color`           VARCHAR(40) DEFAULT NULL,
  `iniciada_at`           DATETIME(3) DEFAULT NULL,
  `cierra_at`             DATETIME(3) DEFAULT NULL,
  `ronda`                 INT(11) NOT NULL DEFAULT 1,
  `version_token`         BIGINT NOT NULL DEFAULT 0,
  `usuario_admin_id`      INT(11) DEFAULT NULL,
  `created_at`            TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at`            TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_codigo` (`codigo_publico`),
  KEY `idx_estado` (`estado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Alternativas (sin límite de cantidad)
CREATE TABLE IF NOT EXISTS `trivia_opciones` (
  `id`        INT(11) NOT NULL AUTO_INCREMENT,
  `trivia_id` INT(11) NOT NULL,
  `orden`     INT(11) NOT NULL DEFAULT 0,
  `texto`     VARCHAR(400) NOT NULL,
  `correcta`  TINYINT(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  KEY `idx_trivia` (`trivia_id`,`orden`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Participantes que entran a la trivia (apodo por dispositivo)
CREATE TABLE IF NOT EXISTS `trivia_participantes` (
  `id`             INT(11) NOT NULL AUTO_INCREMENT,
  `trivia_id`      INT(11) NOT NULL,
  `ronda`          INT(11) NOT NULL DEFAULT 1,
  `nombre`         VARCHAR(80) NOT NULL,
  `navegador_hash` CHAR(64) NOT NULL,
  `ip_hash`        CHAR(64) DEFAULT NULL,
  `created_at`     TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_trivia_nav` (`trivia_id`,`ronda`,`navegador_hash`),
  KEY `idx_trivia` (`trivia_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Respuestas (una por participante y ronda)
CREATE TABLE IF NOT EXISTS `trivia_respuestas` (
  `id`               INT(11) NOT NULL AUTO_INCREMENT,
  `trivia_id`        INT(11) NOT NULL,
  `ronda`            INT(11) NOT NULL DEFAULT 1,
  `participante_id`  INT(11) NOT NULL,
  `opcion_id`        INT(11) NOT NULL,
  `correcta`         TINYINT(1) NOT NULL DEFAULT 0,
  `ms_desde_inicio`  INT(11) DEFAULT NULL,
  `fecha_hora`       DATETIME(3) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_trivia_part` (`trivia_id`,`ronda`,`participante_id`),
  KEY `idx_ranking` (`trivia_id`,`ronda`,`correcta`,`ms_desde_inicio`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- =====================================================================
