#!/bin/bash

# ================================
# MariaDB DB Copy Script (v2)
# ================================

PORT=3306
HOST="localhost"

# 파라미터 파싱
while [[ $# -gt 0 ]]; do
  case "$1" in
    -u)
      USER="$2"
      shift 2
      ;;
    -p)
      PASS="$2"
      shift 2
      ;;
    -s)
      SRC_DB="$2"
      shift 2
      ;;
    -t)
      TGT_DB="$2"
      shift 2
      ;;
    --port)
      PORT="$2"
      shift 2
      ;;
    -h|--host)
      HOST="$2"
      shift 2
      ;;
    *)
      echo "Unknown option: $1"
      exit 1
      ;;
  esac
done

# 필수값 체크
if [[ -z "$USER" || -z "$PASS" || -z "$SRC_DB" || -z "$TGT_DB" ]]; then
  echo "Usage:"
  echo "$0 -u user -p password -s source_db -t target_db [-h host] [--port 3306]"
  exit 1
fi

echo "====================================="
echo " DB Copy Start"
echo " Source : $SRC_DB"
echo " Target : $TGT_DB"
echo " Host   : $HOST:$PORT"
echo "====================================="

# 타겟 DB 생성
echo "[1] Create target DB if not exists..."
mysql -u"$USER" -p"$PASS" -h"$HOST" -P"$PORT" \
  -e "CREATE DATABASE IF NOT EXISTS \`$TGT_DB\`;"

if [[ $? -ne 0 ]]; then
  echo "❌ Failed to create target database"
  exit 1
fi

# 복사
echo "[2] Copying..."

mysqldump -u"$USER" -p"$PASS" -h"$HOST" -P"$PORT" \
  --single-transaction \
  --quick \
  --lock-tables=false \
  --routines \
  --triggers \
  "$SRC_DB" \
| mysql -u"$USER" -p"$PASS" -h"$HOST" -P"$PORT" "$TGT_DB"

if [[ $? -ne 0 ]]; then
  echo "❌ Copy failed"
  exit 1
fi

echo "[3] Done ✅"