#!/bin/bash
# サーバーのDBをローカルに同期するスクリプト
#
# 事前準備（サーバー側でkeinasystemユーザーとして実行）:
#   docker exec keinasystem_db pg_dump -U keinasystem keinasystem > /tmp/keinasystem_dump.sql
#
# 使用: bash sync_db.sh
set -e

REMOTE_HOST="keinafarm"
LOCAL_DUMP="/tmp/keinasystem_dump.sql"

echo "=== DBSync: サーバー → ローカル ==="

# 1. サーバーからdumpファイルをscpで取得
echo "[1/4] サーバーからダンプファイルを取得..."
scp "$REMOTE_HOST:/tmp/keinasystem_dump.sql" "$LOCAL_DUMP"
echo "  → ダンプ取得完了: $LOCAL_DUMP ($(du -sh $LOCAL_DUMP | cut -f1))"

# 2. ローカルのDBコンテナが起動しているか確認
echo "[2/4] ローカルDBコンテナを確認..."
if ! docker compose -f docker-compose.local.yml ps db 2>/dev/null | grep -q "running"; then
  echo "  → ローカルDBコンテナが起動していません。起動します..."
  docker compose -f docker-compose.local.yml up -d db
  echo "  → DB起動待機中..."
  sleep 10
fi

# 3. 既存データをドロップして復元
echo "[3/4] ローカルDBにリストア（既存データをリセット）..."
# DBを一旦削除して再作成してからリストア
docker compose -f docker-compose.local.yml exec -T db \
  psql -U keinasystem -d postgres -c "DROP DATABASE IF EXISTS keinasystem;" --quiet
docker compose -f docker-compose.local.yml exec -T db \
  psql -U keinasystem -d postgres -c "CREATE DATABASE keinasystem OWNER keinasystem;" --quiet
cat "$LOCAL_DUMP" | docker compose -f docker-compose.local.yml exec -T db \
  psql -U keinasystem -d keinasystem --quiet
echo "  → リストア完了"

# クリーンアップ
rm -f "$LOCAL_DUMP"

# 4. マイグレーション（サーバーより新しいマイグレーションを適用）
echo "[4/4] マイグレーション実行..."
docker compose -f docker-compose.local.yml exec backend python manage.py migrate

echo ""
echo "=== 同期完了 ==="
