#!/bin/bash

# 💾 Backup COMPLETO do Projeto Liberi Kids
# Cria backup de tudo antes de fazer deploy
# Execute: ./backup-projeto-completo.sh

echo "💾 BACKUP COMPLETO - Liberi Kids"
echo "================================"

# Cores para output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'

log() {
    echo -e "${GREEN}[✅ OK]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[⚠️  WARN]${NC} $1"
}

info() {
    echo -e "${BLUE}[ℹ️  INFO]${NC} $1"
}

error() {
    echo -e "${RED}[❌ ERRO]${NC} $1"
}

# Configurações
BACKUP_DIR="$HOME/liberi-backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_NAME="liberi-kids-backup-$TIMESTAMP"
BACKUP_PATH="$BACKUP_DIR/$BACKUP_NAME"

echo ""
info "📋 ESTE BACKUP INCLUIRÁ:"
echo "  📁 Código fonte completo"
echo "  🔧 Configurações (.env)"
echo "  📦 Frontend compilado"
echo "  🗄️  Scripts e documentação"
echo "  🏦 Configurações PIX"
echo "  📚 Todos os arquivos do projeto"
echo ""

# Criar diretório de backup
mkdir -p $BACKUP_DIR

echo ""
info "💾 CRIANDO BACKUP COMPLETO..."

# Criar backup
cp -r . $BACKUP_PATH

# Remover arquivos desnecessários do backup
rm -rf $BACKUP_PATH/node_modules 2>/dev/null || true
rm -rf $BACKUP_PATH/client/node_modules 2>/dev/null || true
rm -rf $BACKUP_PATH/.git 2>/dev/null || true
rm -rf $BACKUP_PATH/logs 2>/dev/null || true
rm -rf $BACKUP_PATH/uploads/* 2>/dev/null || true

log "✅ Backup criado: $BACKUP_PATH"

echo ""
info "📊 ESTATÍSTICAS DO BACKUP:"

# Contar arquivos
TOTAL_FILES=$(find $BACKUP_PATH -type f | wc -l)
TOTAL_SIZE=$(du -sh $BACKUP_PATH | cut -f1)

echo "  📁 Total de arquivos: $TOTAL_FILES"
echo "  💾 Tamanho total: $TOTAL_SIZE"
echo "  📅 Data: $(date)"
echo ""

info "📋 CONTEÚDO DO BACKUP:"
echo "  ✅ server-supabase.js - Servidor principal"
echo "  ✅ client/ - Frontend React"
echo "  ✅ config/ - Configurações (Supabase, PIX)"
echo "  ✅ package.json - Dependências"
echo "  ✅ .env - Credenciais (se existir)"
echo "  ✅ *.sh - Scripts de deploy"
echo "  ✅ *.md - Documentação"
echo "  ✅ *.sql - Scripts de banco"
echo ""

# Criar arquivo de informações do backup
cat > $BACKUP_PATH/BACKUP-INFO.txt << EOF
BACKUP LIBERI KIDS
==================

Data: $(date)
Versão: Completa com PIX
Servidor: Supabase
Frontend: React compilado

CONTEÚDO:
- Código fonte completo
- Configurações PIX Mercado Pago
- Frontend compilado
- Scripts de deploy
- Documentação completa

RESTAURAR:
1. Extrair backup
2. npm install
3. Configurar .env
4. ./deploy-completo-servidor.sh

SUPORTE:
- Banco: Supabase (não incluído no backup)
- PIX: Mercado Pago
- Deploy: Scripts automatizados
EOF

log "✅ Arquivo de informações criado"

echo ""
info "🗜️  COMPACTANDO BACKUP..."

# Criar arquivo compactado
cd $BACKUP_DIR
tar -czf "$BACKUP_NAME.tar.gz" "$BACKUP_NAME"
rm -rf "$BACKUP_NAME"

COMPRESSED_SIZE=$(du -sh "$BACKUP_NAME.tar.gz" | cut -f1)

log "✅ Backup compactado: $BACKUP_DIR/$BACKUP_NAME.tar.gz"

echo ""
log "🎉 BACKUP COMPLETO FINALIZADO!"
echo ""

info "📋 RESUMO DO BACKUP:"
echo "  📁 Localização: $BACKUP_DIR/$BACKUP_NAME.tar.gz"
echo "  💾 Tamanho: $COMPRESSED_SIZE"
echo "  📅 Data: $(date)"
echo "  🔢 Arquivos: $TOTAL_FILES"
echo ""

info "🔄 COMO RESTAURAR:"
echo "  1. cd $BACKUP_DIR"
echo "  2. tar -xzf $BACKUP_NAME.tar.gz"
echo "  3. cd $BACKUP_NAME"
echo "  4. npm install"
echo "  5. ./deploy-completo-servidor.sh"
echo ""

info "📂 BACKUPS DISPONÍVEIS:"
ls -la $BACKUP_DIR/*.tar.gz 2>/dev/null | tail -5 || echo "  (Este é o primeiro backup)"

echo ""
warn "💡 DICA: Mantenha backups regulares"
warn "💡 O banco Supabase não está incluído (é na nuvem)"

log "✨ BACKUP SEGURO CRIADO!"
