#!/bin/bash
# Dump existing MySQL database for manual migration to production
# Uses .env for connection settings (or defaults from app config)

set -e
cd "$(dirname "$0")/.."

# Load .env if it exists
if [ -f .env ]; then
  set -a
  source .env
  set +a
  echo "✓ Loaded .env"
fi

# Database connection (from .env or defaults)
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-3306}"
DB_NAME="${DB_NAME:-LRS43}"
DB_USER="${DB_USER:-root}"
DB_PASSWORD="${DB_PASSWORD:-}"

# Output directory and filename
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
OUTPUT_DIR="database_dump"
# Optional: custom base name (argument 1). Spaces are converted to underscores.
BASE_NAME="${1:-LRS43_full_dump}"
BASE_NAME="${BASE_NAME// /_}"
DUMP_FILE="${OUTPUT_DIR}/${BASE_NAME}_${TIMESTAMP}.sql"

mkdir -p "$OUTPUT_DIR"

echo "=============================================="
echo "Database Dump for Production Migration"
echo "=============================================="
echo "Host:     $DB_HOST:$DB_PORT"
echo "Database: $DB_NAME"
echo "User:     $DB_USER"
echo "Output:   $DUMP_FILE"
echo "=============================================="
echo ""

# Run mysqldump (password via env to avoid prompt)
export MYSQL_PWD="$DB_PASSWORD"
mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  --add-drop-database \
  --databases "$DB_NAME" \
  > "$DUMP_FILE"
unset MYSQL_PWD

echo ""
echo "✅ Dump complete: $DUMP_FILE"
echo ""
echo "To restore on production:"
echo "  mysql -h PROD_HOST -u PROD_USER -p < $DUMP_FILE"
echo ""
