-- ---------------------------------------------------------------------------
-- A sessao do cliente final no aplicativo: `clientes_sessoes` (D59, 03/09/2026).
--
--   docker compose exec -T mysql mysql -uroot -proot franquiabv_dev \
--     < scripts/migracao-clientes-sessoes.sql
--
-- A `/api/v4` prova quem e o cliente por um codigo de seis digitos no
-- WhatsApp, e guarda aqui o pedido do codigo e o token trocado por ele (o
-- codigo em `password_hash`, o token em sha256). O sujeito da sessao e o
-- TELEFONE, e nao o cliente: um codigo prova posse do numero, e nada alem.
--
-- IDEMPOTENTE: `CREATE TABLE IF NOT EXISTS`. O DDL e o mesmo do `mysql.sql`
-- (menos o `AUTO_INCREMENT=1`, que o dump grava e a criacao nao precisa), e
-- `scripts/conferir-passo-zero-do-corte.php` compara os dois: uma coluna a
-- mais num deles fica vermelha.
--
-- ---------------------------------------------------------------------------
-- ESTA MIGRACAO PRECISA ESTAR EM PRODUCAO ANTES DO CORTE -- o passo 0 de
-- `docs/procedimento-de-corte.md` (D323).
--
-- A tabela entrou no `mysql.sql` em 03/09/2026 (9d92774), sem migracao: o
-- texto dizia que o ALTER ia para "a lista que espera o descongelamento", e
-- essa lista nao existia. O passo 1 do corte refaz o `mysql.sql` a partir da
-- estrutura de producao, e e dele que `scripts/gerar-ddl-postgres.php` parte.
-- Sem a tabela em producao, ela some do `schema.sql`, e todo pedido de codigo
-- do aplicativo da 500 no primeiro dia.
--
-- Para o codigo antigo de producao a tabela vazia e inofensiva: ninguem a le
-- nem a escreve.
-- ---------------------------------------------------------------------------

CREATE TABLE IF NOT EXISTS `clientes_sessoes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `telefone` varchar(30) NOT NULL,
  `codigo_hash` varchar(255) NOT NULL,
  `tentativas` int NOT NULL DEFAULT '0',
  `token_hash` char(64) DEFAULT NULL,
  `data_criacao` datetime NOT NULL,
  `codigo_expira_em` datetime NOT NULL,
  `confirmado_em` datetime DEFAULT NULL,
  `token_expira_em` datetime DEFAULT NULL,
  `encerrada_em` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_clientes_sessoes_token` (`token_hash`),
  KEY `idx_clientes_sessoes_telefone` (`telefone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
