#!/bin/bash

# Script de Atualização Apenas Pull (sem rebuild)
# Para uso quando você faz apenas git pull e não precisa reconstruir

echo "======================================"
echo "  Atualização Rápida (Pull Only)"
echo "======================================"
echo ""

APP_DIR="/var/www/gestorstream"
cd "$APP_DIR"

# 1. Atualizar Código
echo "📥 [1/4] Fazendo pull do código..."

# Corrigir permissões de arquivos .md antes de atualizar
echo "🔧 Corrigindo permissões de arquivos .md..."
find . -name "*.md" -type f -exec chmod 664 {} \; 2>/dev/null || true
find . -name "*.md" -type f -exec chown www-data:www-data {} \; 2>/dev/null || true

# Fazer stash de alterações locais (mais seguro que reset --hard)
git stash push -m "Auto-update stash $(date +%Y%m%d_%H%M%S)" 2>/dev/null || true

# Atualizar código
git fetch --tags
git fetch origin
git pull origin main

# 2. Backend
echo "🔧 [2/4] Atualizando Backend..."
cd backend

# Verificar se composer.lock está desatualizado
if ! composer validate --no-check-publish 2>/dev/null || ! composer install --dry-run --no-dev --no-interaction 2>/dev/null; then
    echo "📦 composer.lock desatualizado, atualizando dependências..."
    # Atualizar composer.lock primeiro
    COMPOSER_ALLOW_SUPERUSER=1 composer update --no-dev --no-interaction --no-scripts || {
        echo "⚠️  Erro ao atualizar composer.lock, tentando instalar dependências diretamente..."
        COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader --no-interaction --ignore-platform-reqs || {
            echo "❌ Erro crítico ao instalar dependências do Composer"
            echo "   Execute manualmente: cd backend && composer update --no-dev"
            exit 1
        }
    }
fi

# Instalar dependências
echo "📦 Instalando dependências do Composer..."
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader --no-interaction || {
    echo "⚠️  Erro ao instalar, tentando com --ignore-platform-reqs..."
    COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader --no-interaction --ignore-platform-reqs
}

# Verificar se AWS SDK está instalado
if ! composer show aws/aws-sdk-php > /dev/null 2>&1; then
    echo "📦 Instalando AWS SDK para backup automático..."
    COMPOSER_ALLOW_SUPERUSER=1 composer require aws/aws-sdk-php --no-interaction --no-scripts || {
        echo "⚠️  Conflito de dependências detectado, tentando com --with-all-dependencies..."
        COMPOSER_ALLOW_SUPERUSER=1 composer require aws/aws-sdk-php --with-all-dependencies --no-interaction --no-scripts || {
            echo "⚠️  Ainda com conflito, tentando com --ignore-platform-reqs..."
            COMPOSER_ALLOW_SUPERUSER=1 composer require aws/aws-sdk-php --ignore-platform-reqs --no-interaction --no-scripts || {
                echo "❌ Não foi possível instalar AWS SDK automaticamente."
                echo "   Execute manualmente: composer require aws/aws-sdk-php --with-all-dependencies"
            }
        }
    }
    # Reinstalar após adicionar nova dependência
    COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader --no-interaction
fi

php artisan migrate --force
php artisan db:seed --class=PlanSeeder --force
php artisan config:clear
php artisan route:clear
php artisan cache:clear

# Criar diretório de backups se não existir
mkdir -p storage/app/backups
chown -R www-data:www-data storage/app/backups
chmod -R 775 storage/app/backups

cd ..

# 3. Frontend - PULAR (apenas pull, sem rebuild)
echo "⚛️  [3/4] Pulando compilação do Frontend (apenas pull)..."
echo "   (Para reconstruir o frontend, execute: cd frontend && npm install && npm run build)"

# 4. Permissões
echo "🔐 [4/4] Corrigindo Permissões..."
chown -R www-data:www-data .
find . -type d -exec chmod 775 {} \;
find . -type f -exec chmod 664 {} \;

# Garantir permissões especiais para arquivos executáveis
chmod +x backend/artisan update.sh update-pull-only.sh 2>/dev/null || true
if [ -d "frontend/node_modules/.bin" ]; then
    chmod -R +x frontend/node_modules/.bin/ 2>/dev/null || true
fi

# Garantir que arquivos .md tenham permissões corretas
find . -name "*.md" -type f -exec chmod 664 {} \; 2>/dev/null || true
find . -name "*.md" -type f -exec chown www-data:www-data {} \; 2>/dev/null || true

echo ""
echo "✅ Atualização rápida concluída com sucesso!"
echo ""
echo "⚠️  NOTA: O frontend NÃO foi reconstruído."
echo "   Se houver mudanças no frontend, execute manualmente:"
echo "   cd /var/www/gestorstream/frontend && npm install && npm run build"

