#!/bin/bash

# Document Server 데이터베이스 복원 스크립트
# 시놀로지 NAS 환경에서 사용

if [ $# -eq 0 ]; then
    echo "사용법: $0 <백업파일명>"
    echo "예시: $0 document_db_20241201_143000.sql.gz"
    exit 1
fi

BACKUP_FILE="$1"
BACKUP_DIR="/volume1/docker/document-server/backups"
CONTAINER_NAME="document-server-db"

if [ ! -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
    echo "❌ 백업 파일을 찾을 수 없습니다: $BACKUP_DIR/$BACKUP_FILE"
    exit 1
fi

echo "⚠️  주의: 현재 데이터베이스의 모든 데이터가 삭제됩니다!"
read -p "계속하시겠습니까? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "복원이 취소되었습니다."
    exit 1
fi

echo "🔄 데이터베이스 복원 시작..."

# 압축 해제 (필요한 경우)
if [[ $BACKUP_FILE == *.gz ]]; then
    echo "📦 백업 파일 압축 해제 중..."
    gunzip -c "$BACKUP_DIR/$BACKUP_FILE" > "/tmp/restore_temp.sql"
    SQL_FILE="/tmp/restore_temp.sql"
else
    SQL_FILE="$BACKUP_DIR/$BACKUP_FILE"
fi

# 기존 데이터베이스 삭제 및 재생성
echo "🗑️  기존 데이터베이스 삭제 중..."
docker exec $CONTAINER_NAME psql -U docuser -d postgres -c "DROP DATABASE IF EXISTS document_db;"
docker exec $CONTAINER_NAME psql -U docuser -d postgres -c "CREATE DATABASE document_db;"

# 백업 복원
echo "📥 데이터베이스 복원 중..."
docker exec -i $CONTAINER_NAME psql -U docuser -d document_db < "$SQL_FILE"

# 임시 파일 정리
if [ -f "/tmp/restore_temp.sql" ]; then
    rm "/tmp/restore_temp.sql"
fi

echo "✅ 데이터베이스 복원 완료"
echo "🔄 백엔드 서비스 재시작 중..."
docker restart document-server-backend

echo "🎉 복원 작업 완료"
