-- =====================================================================
-- Casos en Video · 03_modo_vivo.sql
-- Tablas del MODO EN VIVO (auditorio con equipos). Ya están incluidas en
-- 01_estructura.sql para instalaciones nuevas. Importa este archivo SOLO si
-- instalaste la versión 1.0 y quieres agregar el modo en vivo.
-- =====================================================================
SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS equipos (
  id           INT UNSIGNED NOT NULL AUTO_INCREMENT,
  conjunto     VARCHAR(80)  NOT NULL,
  nombre       VARCHAR(80)  NOT NULL,
  emoji        VARCHAR(16)  NOT NULL DEFAULT '⭐',
  color        TINYINT UNSIGNED NOT NULL DEFAULT 0,
  codigo       CHAR(6)      NOT NULL,
  integrantes  TEXT NULL,
  activo       TINYINT(1) NOT NULL DEFAULT 1,
  creado_en    DATETIME NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uq_equipos_codigo (codigo),
  KEY ix_equipos_conjunto (conjunto, activo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- fase: lobby → caso → pregunta → revelada → marcador → (pregunta …) → final
CREATE TABLE IF NOT EXISTS vivo_sesiones (
  id            INT UNSIGNED NOT NULL AUTO_INCREMENT,
  titulo        VARCHAR(200) NOT NULL,
  caso_id       INT UNSIGNED NULL,
  conjunto      VARCHAR(80)  NOT NULL,
  token         CHAR(24)     NOT NULL,
  fase          ENUM('lobby','caso','pregunta','revelada','marcador','final') NOT NULL DEFAULT 'lobby',
  indice        INT NOT NULL DEFAULT -1,
  q_inicio_ms   BIGINT NULL,
  q_duracion    INT NULL,
  version       INT UNSIGNED NOT NULL DEFAULT 1,
  config        TEXT NULL,
  snapshot      MEDIUMTEXT NOT NULL,
  activa        TINYINT(1) NOT NULL DEFAULT 1,
  creado_por    INT UNSIGNED NULL,
  creado_en     DATETIME NOT NULL,
  iniciada_en   DATETIME NULL,
  terminada_en  DATETIME NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uq_vivo_token (token),
  KEY ix_vivo_conjunto (conjunto, activa),
  CONSTRAINT fk_vivo_caso  FOREIGN KEY (caso_id)    REFERENCES casos(id)    ON DELETE SET NULL,
  CONSTRAINT fk_vivo_autor FOREIGN KEY (creado_por) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS vivo_equipos (
  sesion_id     INT UNSIGNED NOT NULL,
  equipo_id     INT UNSIGNED NOT NULL,
  unido_en      DATETIME NOT NULL,
  ultimo_en     DATETIME NULL,
  dispositivos  INT NOT NULL DEFAULT 0,
  racha         INT NOT NULL DEFAULT 0,
  PRIMARY KEY (sesion_id, equipo_id),
  KEY ix_ve_equipo (equipo_id),
  CONSTRAINT fk_ve_sesion FOREIGN KEY (sesion_id) REFERENCES vivo_sesiones(id) ON DELETE CASCADE,
  CONSTRAINT fk_ve_equipo FOREIGN KEY (equipo_id) REFERENCES equipos(id)       ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS vivo_respuestas (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  sesion_id   INT UNSIGNED NOT NULL,
  equipo_id   INT UNSIGNED NOT NULL,
  pregunta_k  VARCHAR(20) NOT NULL,
  respuesta   TEXT NULL,
  ms          INT UNSIGNED NOT NULL DEFAULT 0,
  fraccion    DECIMAL(5,4) NULL,
  puntos      INT NOT NULL DEFAULT 0,
  bonus       INT NOT NULL DEFAULT 0,
  extra       INT NOT NULL DEFAULT 0,
  evaluada    TINYINT(1) NOT NULL DEFAULT 0,
  creado_en   DATETIME NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uq_vivo_resp (sesion_id, equipo_id, pregunta_k),
  KEY ix_vr_pregunta (sesion_id, pregunta_k),
  CONSTRAINT fk_vr_sesion FOREIGN KEY (sesion_id) REFERENCES vivo_sesiones(id) ON DELETE CASCADE,
  CONSTRAINT fk_vr_equipo FOREIGN KEY (equipo_id) REFERENCES equipos(id)       ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO ajustes (clave, valor) VALUES ('version_esquema', '2') ON DUPLICATE KEY UPDATE valor = '2';
