-- Esvazia o dicionario de enderecos. O ViaCEP passou a ser a fonte.
--
--     docker compose exec -T mysql mysql -uroot -proot <banco> < scripts/limpar-dicionario-cep.sql
--
-- POR QUE ISTO EXISTE. O sistema carregava um dicionario proprio de CEPs --
-- 707.250 logradouros, 38.450 bairros, 10.082 cidades, 27 estados -- de origem
-- e data desconhecidas. Ele tinha dois problemas:
--
--   1. Envelhecia sozinho. Rua nova nao aparecia; CEP alterado seguia velho.
--      Comparado com o ViaCEP no mesmo CEP 01001000, o dicionario dizia
--      "Praca da Se - lado impar" e a fonte diz "Praca da Se".
--
--   2. Um mesmo CEP tinha ate 37 logradouros, e a consulta devolvia UM sem
--      `ORDER BY` -- isto e, sem dizer qual (D72). Eram 2.083 CEPs assim.
--
-- Por decisao de 31/08/2026, a fonte passou a ser a API do ViaCEP e estas
-- tabelas viraram CACHE: continuam existindo, vazias, e enchem sozinhas
-- conforme os CEPs vao sendo consultados. Ver `ISBase\Service\EnderecoService`.
-- `estados` e a excecao: sai daqui com as 27 UFs (abaixo).
--
-- ISTO E SEGURO, E FOI CONFERIDO ANTES. Nenhuma tabela fora deste conjunto
-- aponta para elas: as unicas chaves estrangeiras sao internas
-- (logradouros->bairros->cidades->estados). `clientes`, `usuarios`, `unidades`
-- e `unidades_socios` guardam endereco como TEXTO -- cep, logradouro, bairro,
-- cidade, estado sao colunas de string, nao referencias. Apagar o dicionario
-- nao mexe em endereco de ninguem.
--
-- O QUE SE PERDE. O dicionario nao volta: ele nao esta versionado e nao ha de
-- onde recarregar. O que volta e o uso -- cada CEP consultado repovoa a sua
-- propria linha. Se isso for indesejado em algum ambiente, nao rode aqui.
--
-- AS 27 UFs VOLTAM LOGO DEPOIS DO DELETE (06/10/2026, D430). "Nenhuma tabela
-- aponta para elas" vale para chave estrangeira, e so para ela: o ERP antigo
-- monta de `estados` a lista do campo obrigatorio *Estado
-- (`EstadoRepository::popularCombobox`, lida pelos formularios de cliente --
-- o cadastro, a edicao, o modal do PDV e o da agenda --, de fidelidade, de
-- unidade, de usuario e pelo filtro dos relatorios e das campanhas). Com a
-- tabela vazia o select vem sem opcao, o `ClienteFilter` recusa o cliente
-- brasileiro sem estado, e a busca de CEP nao consegue escolher a UF que trouxe
-- -- ela grava o estado no banco, mas a pagina aberta nao ganha a opcao. Foi o
-- que ficou no desenvolvimento depois de 31/08: quatro UFs, as dos CEPs
-- consultados. A lista abaixo e a de `RegraDoCadastroDeCliente::UFS`, a mesma
-- da tela nova, e `scripts/ensaiar-sql-do-passo-3.php` compara as duas. O
-- `EnderecoService` acha a UF pelo `uf` e nao cria outra.
--
-- A ordem das linhas abaixo importa: filho antes de pai, senao a chave
-- estrangeira recusa.

-- Os nomes tem acento: o texto vai como UTF-8 qualquer que seja o padrao do
-- cliente `mysql` de quem roda.
SET NAMES utf8mb4;

SELECT '--- ANTES ---' AS '';
SELECT 'logradouros' AS tabela, COUNT(*) AS linhas FROM logradouros
UNION ALL SELECT 'bairros', COUNT(*) FROM bairros
UNION ALL SELECT 'cidades', COUNT(*) FROM cidades
UNION ALL SELECT 'estados', COUNT(*) FROM estados;

DELETE FROM logradouros;
DELETE FROM bairros;
DELETE FROM cidades;
DELETE FROM estados;

INSERT INTO estados (uf, nome) VALUES
    ('AC', 'Acre'), ('AL', 'Alagoas'), ('AP', 'Amapá'), ('AM', 'Amazonas'), ('BA', 'Bahia'),
    ('CE', 'Ceará'), ('DF', 'Distrito Federal'), ('ES', 'Espírito Santo'), ('GO', 'Goiás'),
    ('MA', 'Maranhão'), ('MT', 'Mato Grosso'), ('MS', 'Mato Grosso do Sul'), ('MG', 'Minas Gerais'),
    ('PA', 'Pará'), ('PB', 'Paraíba'), ('PR', 'Paraná'), ('PE', 'Pernambuco'), ('PI', 'Piauí'),
    ('RJ', 'Rio de Janeiro'), ('RN', 'Rio Grande do Norte'), ('RS', 'Rio Grande do Sul'),
    ('RO', 'Rondônia'), ('RR', 'Roraima'), ('SC', 'Santa Catarina'), ('SP', 'São Paulo'),
    ('SE', 'Sergipe'), ('TO', 'Tocantins');

SELECT '--- DEPOIS (esperado: 0 nas tres primeiras, e as 27 UFs em estados) ---' AS '';
SELECT 'logradouros' AS tabela, COUNT(*) AS linhas FROM logradouros
UNION ALL SELECT 'bairros', COUNT(*) FROM bairros
UNION ALL SELECT 'cidades', COUNT(*) FROM cidades
UNION ALL SELECT 'estados', COUNT(*) FROM estados;
