#!/usr/bin/env bash
#
# Roda os relatorios nos DOIS bancos e compara resposta por resposta.
#
#     sh scripts/comparar-relatorios-nos-dois-bancos.sh
#
# Sai com 1 se algum relatorio responder coisa diferente.
#
# POR QUE ISTO EXISTE (D107). O medidor de relatorios pergunta "quebrou?". Esta
# comparacao pergunta "os dois bancos dizem o MESMO?" -- que e a unica forma de
# ver a classe de defeito que NAO quebra nada: ordenacao por coluna anulavel
# (D46), linha sorteada sem ordem (D72), arredondamento.
#
# Foi assim que o D107 apareceu: 30 dos 31 relatorios batiam, e o unico
# descompasso levou a um defeito que nao tinha nada a ver com banco de dados --
# metade de cada PDF era a pagina do ERP colada no fim.
#
# ---------------------------------------------------------------------------
# ELE MONTA OS DOIS BANCOS DO ZERO, e essa e a parte que faz a resposta valer.
#
# As fixtures usam `CURRENT_DATE`. Comparar um banco montado hoje com outro
# montado ontem faz a data do caixa aparecer como divergencia entre engines --
# aconteceu, e foi `04/09/2026` contra `05/09/2026`. E o D106 um andar abaixo:
# comparacao so responde a pergunta dela quando os dois lados tem a mesma idade.
#
# Leva uns dez minutos: sao duas montagens e duas passagens completas.
#
# ---------------------------------------------------------------------------
# NAO ESTA NO `conferir-tudo.sh` nem no CI, pelo mesmo motivo do
# `conferir-migracao.php`: e portao de CORTE, para rodar antes da virada e
# depois de mexer em consulta de relatorio.

set -eu

DESTINO=${DESTINO:-/tmp/comparar-relatorios}

echo "== PostgreSQL"
MSYS_NO_PATHCONV=1 DESPEJO="$DESTINO/pg" sh scripts/medir-telas-no-postgres.sh > /dev/null

echo "== MySQL"
MSYS_NO_PATHCONV=1 DESPEJO="$DESTINO/my" sh scripts/medir-telas-no-postgres.sh --mysql > /dev/null

echo
MSYS_NO_PATHCONV=1 docker compose exec -T app php scripts/comparar-despejos.php "$DESTINO/pg" "$DESTINO/my"
