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

ROOT_DIR="/var/www/html/escolar"
BACKUP_DIR="$ROOT_DIR/versao/backups"
TS=$(date +"%Y%m%d-%H%M%S")
CODE_BACKUP="$BACKUP_DIR/escolar-code-$TS.tar.gz"
DB_BACKUP="$BACKUP_DIR/escolar-db-$TS.sql"

mkdir -p "$BACKUP_DIR"

echo "[1/2] Backup do código: $CODE_BACKUP"
tar -czf "$CODE_BACKUP" \
  --exclude="$ROOT_DIR/node_modules" \
  --exclude="$ROOT_DIR/vendor" \
  --exclude="$ROOT_DIR/storage/logs" \
  --exclude="$ROOT_DIR/storage/framework/cache" \
  --exclude="$ROOT_DIR/storage/framework/sessions" \
  --exclude="$ROOT_DIR/storage/framework/views" \
  -C "$ROOT_DIR" .

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)

if command -v mysqldump >/dev/null 2>&1; then
  echo "[2/2] Backup do banco: $DB_BACKUP"
  MYSQL_PWD="$DB_PASS" mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" "$DB_NAME" > "$DB_BACKUP"
else
  echo "[2/2] mysqldump não encontrado; pulei backup do banco."
fi

echo "Backup concluído."
