#!/usr/bin/env sh
set -eu

CODIGO_SIAFI="${1:-}"
CONTAINER="${MYSQL_CONTAINER:-maspernf-mysql}"
DATABASE="${MYSQL_DATABASE:-maspernf}"
USER="${MYSQL_ROOT_USER:-root}"
PASSWORD="${MYSQL_ROOT_PASSWORD:-root}"

if [ -z "$CODIGO_SIAFI" ]; then
  echo "Uso: $0 CODIGO_SIAFI" >&2
  echo "Exemplo: $0 7107" >&2
  exit 2
fi

case "$CODIGO_SIAFI" in
  *[!0-9]*)
    echo "Erro: codigo SIAFI deve conter apenas numeros." >&2
    exit 2
    ;;
esac

if [ "${#CODIGO_SIAFI}" -gt 10 ]; then
  echo "Erro: codigo SIAFI deve ter no maximo 10 digitos." >&2
  exit 2
fi

if ! docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
  echo "Erro: container $CONTAINER nao esta rodando. Execute ./up.sh primeiro." >&2
  exit 1
fi

DOC_TABLE="nfse_documentos_${CODIGO_SIAFI}"
EVT_TABLE="nfse_eventos_${CODIGO_SIAFI}"
PART_TABLE="nfse_documento_partes_${CODIGO_SIAFI}"

EXISTING_COUNT=$(docker exec "$CONTAINER" mysql \
  -h127.0.0.1 \
  -u"$USER" \
  -p"$PASSWORD" \
  -N \
  -B \
  -D "$DATABASE" \
  -e "
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = DATABASE()
  AND table_name IN ('$DOC_TABLE', '$EVT_TABLE', '$PART_TABLE');
" 2>/dev/null)

if [ "$EXISTING_COUNT" = "3" ]; then
  echo "Tabelas do municipio SIAFI $CODIGO_SIAFI ja existem. Seguindo."
  exit 0
fi

echo "Tabelas do municipio SIAFI $CODIGO_SIAFI incompletas ou ausentes. Criando..."

./scripts/gerar_sql_tabelas_municipio.sh "$CODIGO_SIAFI" | docker exec -i "$CONTAINER" mysql \
  -h127.0.0.1 \
  -u"$USER" \
  -p"$PASSWORD" \
  -D "$DATABASE"

echo "Tabelas garantidas:"
echo "  $DOC_TABLE"
echo "  $EVT_TABLE"
echo "  $PART_TABLE"
