#!/usr/bin/env bash
set -euo pipefail
# MySQL dump + note for binlog/PITR and object-storage versioning
# Usage: ./scripts/backup/mysql-dump.sh

ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"

if [[ -f .env ]]; then
  set -a
  # shellcheck disable=SC1091
  source .env
  set +a
fi

STAMP="$(date -u +%Y%m%dT%H%M%SZ)"
OUT_DIR="${BACKUP_DIR:-$ROOT/storage/backups}"
mkdir -p "$OUT_DIR"
OUT="$OUT_DIR/ronnie_tra-${STAMP}.sql.gz"

mysqldump -h"${DB_HOST:-127.0.0.1}" -u"${DB_USERNAME}" -p"${DB_PASSWORD}" \
  --single-transaction --routines --triggers "${DB_DATABASE}" | gzip -c > "$OUT"

echo "Wrote $OUT"
echo "NOTE: enable binary logging on MySQL for PITR; keep object-storage versioning on media bucket."
echo "Dry-run restore: gunzip -c \"$OUT\" | mysql -u\$DB_USERNAME -p \$DB_DATABASE"
