#!/bin/bash
# Backup script for English World Center Chatbot

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

BACKUP_DIR="/home/deploy/backups"
DATE=$(date +%Y%m%d_%H%M%S)
DATE_FOLDER=$(date +%Y%m%d)
BACKUP_DATE_DIR="$BACKUP_DIR/$DATE_FOLDER"

echo -e "${BLUE}💾 Starting backup process...${NC}"

# Create backup directory with date folder
mkdir -p $BACKUP_DATE_DIR

# Backup database (run from project dir)
cd "/var/www/vhosts/chat.englishworldcenter.com/httpdocs"
echo -e "${YELLOW}📦 Backing up database...${NC}"
if docker exec ai-learning-platform-ewc-postgres psql -U postgres -lqt | cut -d \| -f 1 | grep -qw ai_learning_platform > /dev/null 2>&1; then
    if docker exec ai-learning-platform-ewc-postgres pg_dump -U postgres ai_learning_platform > $BACKUP_DATE_DIR/db_backup_$DATE.sql 2>/dev/null; then
        echo -e "${GREEN}✅ Database backup completed${NC}"
    else
        echo -e "${RED}❌ Database backup failed${NC}"
        exit 1
    fi
else
    echo -e "${YELLOW}⚠️  Database 'ai_learning_platform' does not exist, skipping...${NC}"
fi

# Backup uploads directory (only if it exists)
echo -e "${YELLOW}📁 Backing up uploads directory...${NC}"
if [ -d "backend/uploads" ] && [ "$(ls -A backend/uploads 2>/dev/null)" ]; then
    if tar -czf $BACKUP_DATE_DIR/uploads_backup_$DATE.tar.gz backend/uploads/ 2>/dev/null; then
        echo -e "${GREEN}✅ Uploads backup completed${NC}"
    else
        echo -e "${YELLOW}⚠️  Uploads backup failed (directory may be empty)${NC}"
    fi
else
    echo -e "${YELLOW}⚠️  Uploads directory not found or empty, skipping...${NC}"
fi

# Backup logs from Docker volume
echo "📋 Backing up logs from Docker volume..."
if docker volume inspect ai-learning-platform-backend-logs > /dev/null 2>&1; then
    docker run --rm -v ai-learning-platform-backend-logs:/logs -v $BACKUP_DATE_DIR:/backup alpine tar -czf /backup/logs_backup_$DATE.tar.gz -C /logs . 2>/dev/null
    if [ $? -eq 0 ] && [ -f "$BACKUP_DATE_DIR/logs_backup_$DATE.tar.gz" ]; then
        echo "✅ Logs backup completed"
    else
        echo "⚠️  Logs volume is empty, skipping..."
        rm -f $BACKUP_DATE_DIR/logs_backup_$DATE.tar.gz
    fi
else
    echo "⚠️  Logs volume not found, skipping..."
fi

# Keep only last 7 days of backups
echo -e "${YELLOW}🧹 Cleaning up old backups...${NC}"
find $BACKUP_DIR -type d -name "20*" -mtime +7 -exec rm -rf {} + 2>/dev/null || true

echo -e "${GREEN}✅ Backup completed: $DATE${NC}"
echo -e "${BLUE}📁 Backup location: $BACKUP_DATE_DIR${NC}"

if [ -d "$BACKUP_DIR" ]; then
    BACKUP_SIZE=$(du -sh $BACKUP_DIR | cut -f1)
    echo -e "${BLUE}📊 Total backup size: $BACKUP_SIZE${NC}"
fi

echo -e "${YELLOW}🔒 Renewing SSL certificate...${NC}"
sudo certbot renew --quiet
