# Backup script for RoFS MySQL database
# Usage: ./scripts/backup-db.sh [output_dir]

set -euo pipefail

OUTPUT_DIR="${1:-./backups}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$OUTPUT_DIR"

DB_HOST="${MYSQL_HOST:-127.0.0.1}"
DB_PORT="${MYSQL_PORT:-3306}"
DB_NAME="${MYSQL_DATABASE:-rofs}"
DB_USER="${MYSQL_USER:-rofs}"
DB_PASS="${MYSQL_PASSWORD:-}"

OUTFILE="$OUTPUT_DIR/rofs_${TIMESTAMP}.sql.gz"

echo "Backing up $DB_NAME to $OUTFILE ..."
mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" ${DB_PASS:+-p"$DB_PASS"} \
  --single-transaction --routines --triggers "$DB_NAME" | gzip > "$OUTFILE"

echo "Backup complete: $OUTFILE ($(du -h "$OUTFILE" | cut -f1))"
