CREATE TABLE IF NOT EXISTS empresas (
 id INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(150) NOT NULL,
 slug VARCHAR(100) NOT NULL UNIQUE,
 logo VARCHAR(255) NULL,
 status ENUM('ativo','inativo') DEFAULT 'ativo',
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS usuarios (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 nome VARCHAR(150) NOT NULL,
 email VARCHAR(150) NOT NULL,
 senha VARCHAR(255) NOT NULL,
 tipo ENUM('admin','jogador') DEFAULT 'jogador',
 status ENUM('ativo','pendente','bloqueado') DEFAULT 'ativo',
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 UNIQUE KEY unico_email_empresa (empresa_id,email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS campeonatos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 nome VARCHAR(150) NOT NULL,
 slug VARCHAR(120) NOT NULL,
 tipo ENUM('pontos_corridos','mata_mata','grupos_mata_mata') DEFAULT 'grupos_mata_mata',
 status ENUM('rascunho','ativo','finalizado') DEFAULT 'ativo',
 mercado_fecha_minutos INT DEFAULT 60,
 placar_exato INT DEFAULT 10,
 vencedor INT DEFAULT 4,
 empate INT DEFAULT 4,
 um_placar INT DEFAULT 2,
 erro INT DEFAULT 0,
 bonus_streak INT DEFAULT 2,
 banner VARCHAR(255) NULL,
 descricao TEXT NULL,
 logo VARCHAR(255) NULL,
 banner_cor VARCHAR(20) DEFAULT '#00e701',
 permite_empate TINYINT(1) DEFAULT 1,
 palpites_bloqueados TINYINT(1) DEFAULT 0,
 ia_ativa TINYINT(1) DEFAULT 0,
 api_fonte VARCHAR(80) NULL,
 atualizado_em DATETIME NULL,
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 KEY idx_empresa (empresa_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS fases (
 id INT AUTO_INCREMENT PRIMARY KEY,
 campeonato_id INT NOT NULL,
 nome VARCHAR(100) NOT NULL,
 slug VARCHAR(80) NOT NULL,
 ordem INT DEFAULT 0,
 multiplicador DECIMAL(5,2) DEFAULT 1,
 KEY idx_camp (campeonato_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS grupos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 campeonato_id INT NOT NULL,
 nome VARCHAR(80) NOT NULL,
 slug VARCHAR(80) NOT NULL,
 ordem INT DEFAULT 0,
 KEY idx_camp (campeonato_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS times (
 id INT AUTO_INCREMENT PRIMARY KEY,
 campeonato_id INT NOT NULL,
 grupo_id INT NULL,
 nome VARCHAR(150) NOT NULL,
 sigla VARCHAR(10) NULL,
 escudo VARCHAR(255) NULL,
 cor VARCHAR(20) NULL,
 KEY idx_camp (campeonato_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS jogos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 campeonato_id INT NOT NULL,
 fase_id INT NULL,
 grupo_id INT NULL,
 time_a_id INT NULL,
 time_b_id INT NULL,
 time_a_nome VARCHAR(150) NULL,
 time_b_nome VARCHAR(150) NULL,
 escudo_a VARCHAR(255) NULL,
 escudo_b VARCHAR(255) NULL,
 data_jogo DATETIME NOT NULL,
 gols_a INT NULL,
 gols_b INT NULL,
 status ENUM('agendado','fechado','finalizado','cancelado') DEFAULT 'agendado',
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 KEY idx_camp (campeonato_id),
 KEY idx_data (data_jogo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS palpites (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 campeonato_id INT NOT NULL,
 jogo_id INT NOT NULL,
 usuario_id INT NOT NULL,
 gols_a INT NOT NULL,
 gols_b INT NOT NULL,
 pontos INT DEFAULT 0,
 acerto_tipo VARCHAR(50) NULL,
 processado TINYINT(1) DEFAULT 0,
 num_edicoes INT DEFAULT 0,
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 atualizado_em DATETIME NULL,
 UNIQUE KEY unico_palpite (jogo_id,usuario_id),
 KEY idx_rank (empresa_id,campeonato_id,usuario_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS ranking (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 campeonato_id INT NOT NULL,
 usuario_id INT NOT NULL,
 pontos_total INT DEFAULT 0,
 acertos_exatos INT DEFAULT 0,
 acertos_vencedor INT DEFAULT 0,
 erros INT DEFAULT 0,
 current_streak INT DEFAULT 0,
 atualizado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 UNIQUE KEY unico_ranking (campeonato_id,usuario_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS logs_sistema (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NULL,
 usuario_id INT NULL,
 origem VARCHAR(100),
 tipo VARCHAR(50),
 mensagem TEXT,
 detalhes LONGTEXT NULL,
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


CREATE TABLE IF NOT EXISTS temporadas (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 campeonato_id INT NOT NULL,
 nome VARCHAR(120) NOT NULL,
 ano INT NULL,
 status ENUM('rascunho','ativo','finalizado') DEFAULT 'ativo',
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 KEY idx_camp (campeonato_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS configuracoes (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 chave VARCHAR(120) NOT NULL,
 valor TEXT NULL,
 atualizado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 UNIQUE KEY uniq_empresa_chave (empresa_id,chave)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS importacoes (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 campeonato_id INT NOT NULL,
 usuario_id INT NULL,
 tipo VARCHAR(50) DEFAULT 'csv',
 arquivo VARCHAR(255) NULL,
 total_linhas INT DEFAULT 0,
 importados INT DEFAULT 0,
 erros INT DEFAULT 0,
 status ENUM('processado','erro') DEFAULT 'processado',
 detalhes LONGTEXT NULL,
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS auditoria (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NULL,
 usuario_id INT NULL,
 acao VARCHAR(100) NOT NULL,
 entidade VARCHAR(100) NULL,
 entidade_id INT NULL,
 detalhes TEXT NULL,
 ip VARCHAR(80) NULL,
 criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
 KEY idx_empresa (empresa_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
