#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="/var/www/html/escolar"
BACKUP_DIR="$ROOT_DIR/versao/backups"

if [ $# -lt 1 ]; then
  echo "Uso: $0 <timestamp>"
  echo "Exemplo: $0 20260128-120000"
  exit 1
fi

TS="$1"
CODE_BACKUP="$BACKUP_DIR/escolar-code-$TS.tar.gz"
DB_BACKUP="$BACKUP_DIR/escolar-db-$TS.sql"

if [ ! -f "$CODE_BACKUP" ]; then
  echo "Backup de código não encontrado: $CODE_BACKUP"
  exit 1
fi

echo "[1/2] Restaurando código a partir de $CODE_BACKUP"
tar -xzf "$CODE_BACKUP" -C "$ROOT_DIR"

if [ -f "$DB_BACKUP" ]; then
  if command -v php8.4 >/dev/null 2>&1; then
    PHP=php8.4
  else
    PHP=php
  fi

  DB_NAME=$($PHP -r "echo trim(file_get_contents('$ROOT_DIR/.env'));" | grep -E '^DB_DATABASE=' | cut -d= -f2)
  DB_USER=$($PHP -r "echo trim(file_get_contents('$ROOT_DIR/.env'));" | grep -E '^DB_USERNAME=' | cut -d= -f2)
  DB_PASS=$($PHP -r "echo trim(file_get_contents('$ROOT_DIR/.env'));" | grep -E '^DB_PASSWORD=' | cut -d= -f2)
  DB_HOST=$($PHP -r "echo trim(file_get_contents('$ROOT_DIR/.env'));" | grep -E '^DB_HOST=' | cut -d= -f2)
  DB_PORT=$($PHP -r "echo trim(file_get_contents('$ROOT_DIR/.env'));" | grep -E '^DB_PORT=' | cut -d= -f2)

  echo "[2/2] Restaurando banco a partir de $DB_BACKUP"
  MYSQL_PWD="$DB_PASS" mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" "$DB_NAME" < "$DB_BACKUP"
else
  echo "[2/2] Backup do banco não encontrado; pulei restauração do banco."
fi

echo "Rollback concluído."
