#!/bin/bash
# scripts/rollback-version.sh - Rollback rapide vers version précédente
# Usage: ./rollback-version.sh <version>

set -e

# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

VERSION="$1"

if [ -z "$VERSION" ]; then
  echo -e "${RED}❌ Usage: $0 <version>${NC}"
  echo -e "${YELLOW}Exemple: $0 v0.8-stable${NC}"
  echo -e "\n${YELLOW}Images disponibles sur GitHub:${NC}"
  echo "  https://github.com/Taaazzz-prog?tab=packages"
  exit 1
fi

echo -e "${YELLOW}🔄 ROLLBACK vers version ${VERSION}${NC}"
echo -e "${RED}⚠️  Cela va redéployer backend et frontend${NC}"
read -p "Confirmer le rollback (tapez 'yes'): " CONFIRM

if [ "$CONFIRM" != "yes" ]; then
  echo -e "${YELLOW}❌ Rollback annulé${NC}"
  exit 0
fi

# Mise à jour des images dans docker-compose.swarm.yml
echo -e "${YELLOW}⏳ Modification docker-compose.swarm.yml...${NC}"

sed -i.bak "s|ghcr.io/taaazzz-prog/faildaily-backend:.*|ghcr.io/taaazzz-prog/faildaily-backend:${VERSION}|" \
  ~/FailDaily/docker/docker-compose.swarm.yml

sed -i "s|ghcr.io/taaazzz-prog/faildaily-frontend:.*|ghcr.io/taaazzz-prog/faildaily-frontend:${VERSION}|" \
  ~/FailDaily/docker/docker-compose.swarm.yml

# Afficher les changements
echo -e "${YELLOW}📝 Modifications:${NC}"
diff ~/FailDaily/docker/docker-compose.swarm.yml.bak ~/FailDaily/docker/docker-compose.swarm.yml || true

# Redéployer la stack
echo -e "${YELLOW}⏳ Redéploiement stack...${NC}"
docker stack deploy -c ~/FailDaily/docker/docker-compose.swarm.yml faildaily

echo -e "${YELLOW}⏳ Attente démarrage services (30s)...${NC}"
sleep 30

# Vérifier le déploiement
echo -e "${YELLOW}📊 État des services:${NC}"
docker stack ps faildaily --format "table {{.Name}}\t{{.Image}}\t{{.CurrentState}}"

# Test health
echo -e "\n${YELLOW}🔍 Test endpoint health...${NC}"
if curl -f -s http://localhost:3000/health > /dev/null; then
  echo -e "${GREEN}✅ Backend opérationnel${NC}"
else
  echo -e "${RED}❌ Backend KO - Vérifier les logs${NC}"
  docker service logs faildaily_backend --tail 50
  exit 1
fi

echo -e "${GREEN}✅ Rollback vers ${VERSION} terminé !${NC}"

# Log
echo "$(date): Rollback vers ${VERSION}" >> ~/FailDaily/backups/rollback.log
