#!/bin/bash
# ─────────────────────────────────────────────────────────────────────────────
# backup-restore.sh — Restaure un backup PostgreSQL dans le conteneur Docker
#
# Usage : ./backup-restore.sh <fichier.sql.gz>
# Exemple : ./backup-restore.sh /home/ubuntu/backups/iliacloud_2026-04-03_030000.sql.gz
#
# ⚠️  ATTENTION : Ceci ecrase la BDD actuelle !
# ─────────────────────────────────────────────────────────────────────────────

set -euo pipefail

if [ $# -ne 1 ]; then
  echo "Usage: $0 <fichier_backup.sql.gz>"
  echo "Exemple: $0 /home/ubuntu/backups/iliacloud_2026-04-03_030000.sql.gz"
  exit 1
fi

BACKUP_FILE="$1"
DB_NAME="iliacloud"
DB_USER="iliacloud"
CONTAINER_NAME=$(docker ps --format '{{.Names}}' | grep postgres | head -1)

if [ ! -f "$BACKUP_FILE" ]; then
  echo "ERREUR : Fichier $BACKUP_FILE introuvable"
  exit 1
fi

if [ -z "$CONTAINER_NAME" ]; then
  echo "ERREUR : Conteneur PostgreSQL introuvable"
  exit 1
fi

echo "══════════════════════════════════════════════════════════════"
echo "  RESTAURATION DE BACKUP"
echo "  Fichier : $BACKUP_FILE"
echo "  Conteneur : $CONTAINER_NAME"
echo "  Base : $DB_NAME"
echo "══════════════════════════════════════════════════════════════"
echo ""
echo "⚠️  Ceci va ECRASER la base de donnees actuelle !"
read -p "Continuer ? (oui/non) : " CONFIRM

if [ "$CONFIRM" != "oui" ]; then
  echo "Restauration annulee."
  exit 0
fi

echo ""
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Arret des connexions actives..."
docker exec "$CONTAINER_NAME" psql -U "$DB_USER" -d postgres -c \
  "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '$DB_NAME' AND pid <> pg_backend_pid();" 2>/dev/null || true

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Suppression et recreation de la base..."
docker exec "$CONTAINER_NAME" psql -U "$DB_USER" -d postgres -c "DROP DATABASE IF EXISTS $DB_NAME;"
docker exec "$CONTAINER_NAME" psql -U "$DB_USER" -d postgres -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Restauration en cours..."
gunzip -c "$BACKUP_FILE" | docker exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME" > /dev/null

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Restauration terminee avec succes !"
echo ""
echo "Prochaine etape : redemarrer le backend"
echo "  docker service update --force iliacloud_backend"
