#!/usr/bin/env bash
# Restore do dump Postgres do Conecta a partir de um .tar.gz gerado pelo backup-daily.sh
# Uso: ./restore-backup.sh /var/backups/conecta/conecta_YYYYMMDD_HHMMSS.tar.gz
set -euo pipefail

ARCHIVE="${1:-}"
if [[ -z "${ARCHIVE}" || ! -f "${ARCHIVE}" ]]; then
  echo "Uso: $0 /caminho/conecta_YYYYMMDD_HHMMSS.tar.gz"
  exit 1
fi

ENV_FILE="/var/www/html/api/laravel/.env"
DB_DATABASE="$(rg -N '^DB_DATABASE=' "${ENV_FILE}" | cut -d= -f2-)"
DB_USERNAME="$(rg -N '^DB_USERNAME=' "${ENV_FILE}" | cut -d= -f2-)"
DB_PASSWORD="$(rg -N '^DB_PASSWORD=' "${ENV_FILE}" | cut -d= -f2-)"

TMP="$(mktemp -d)"
trap 'rm -rf "${TMP}"' EXIT

tar -xzf "${ARCHIVE}" -C "${TMP}"
DUMP="$(find "${TMP}" -name 'conecta.dump' | head -1)"
if [[ -z "${DUMP}" ]]; then
  echo "Dump não encontrado no arquivo."
  exit 1
fi

echo "ATENÇÃO: isto substitui o banco '${DB_DATABASE}'."
read -r -p "Digite RESTORE para continuar: " confirm
[[ "${confirm}" == "RESTORE" ]] || { echo "Abortado."; exit 1; }

export PGPASSWORD="${DB_PASSWORD}"
BASENAME="$(basename "${DUMP}")"
docker cp "${DUMP}" "conecta_postgres:/tmp/${BASENAME}"

docker exec conecta_postgres pg_restore \
  -U "${DB_USERNAME}" \
  -d "${DB_DATABASE}" \
  --clean \
  --if-exists \
  --no-owner \
  "/tmp/${BASENAME}"

docker exec conecta_postgres rm -f "/tmp/${BASENAME}"
unset PGPASSWORD

echo "Restore concluído. Rode: php artisan config:cache && php artisan migrate --force"
