#!/bin/bash
# diagnosticar-backup-storage.sh
# Script para diagnosticar problema de download de backup do storage

echo "🔍 Diagnosticando download de backup do storage..."
echo ""

BACKEND_DIR="/var/www/gestorstream/backend"
LOG_FILE="$BACKEND_DIR/storage/logs/laravel.log"

cd "$BACKEND_DIR" || exit 1

echo "📋 1. Verificando configuração de storage:"
echo "=========================================="
php artisan tinker --execute="
try {
    \$storage = \App\Models\StorageIntegration::getActive();
    if (\$storage) {
        echo '✅ Storage ativo encontrado:' . PHP_EOL;
        echo '   Nome: ' . \$storage->name . PHP_EOL;
        echo '   Provider: ' . \$storage->provider . PHP_EOL;
        echo '   Bucket: ' . \$storage->bucket . PHP_EOL;
        echo '   Região: ' . (\$storage->region ?? 'não configurado') . PHP_EOL;
        echo '   Credenciais configuradas: ' . ((\$storage->access_key && \$storage->secret_key) ? 'SIM' : 'NÃO') . PHP_EOL;
    } else {
        echo '❌ Nenhum storage ativo configurado' . PHP_EOL;
        echo '   Configure um storage em Admin > Configurações > Integrações > Storage' . PHP_EOL;
    }
} catch (\Exception \$e) {
    echo '❌ Erro ao verificar storage: ' . \$e->getMessage() . PHP_EOL;
}
"
echo ""

echo "📋 2. Últimos erros relacionados a backup/storage:"
echo "=========================================="
tail -200 "$LOG_FILE" | grep -i "backup\|storage\|download\|s3\|aws" | tail -30
echo ""

echo "📋 3. Testando download manual do storage:"
echo "=========================================="
BACKUP_FILE="backup_mysql_2026-01-14_15-30-21.sql"
STORAGE_KEY="backups/$BACKUP_FILE"

php artisan tinker --execute="
try {
    \$storage = \App\Models\StorageIntegration::getActive();
    if (!\$storage) {
        echo '❌ Nenhum storage ativo' . PHP_EOL;
        exit;
    }
    
    \$backupService = app(\App\Services\DatabaseBackupService::class);
    echo 'Tentando baixar: $STORAGE_KEY' . PHP_EOL;
    
    try {
        \$localPath = \$backupService->downloadFromStorage('$STORAGE_KEY');
        echo '✅ Download bem-sucedido!' . PHP_EOL;
        echo '   Caminho local: ' . \$localPath . PHP_EOL;
        echo '   Tamanho: ' . filesize(\$localPath) . ' bytes' . PHP_EOL;
        echo '   Legível: ' . (is_readable(\$localPath) ? 'SIM' : 'NÃO') . PHP_EOL;
    } catch (\Exception \$e) {
        echo '❌ Erro ao baixar: ' . \$e->getMessage() . PHP_EOL;
        echo '   Classe: ' . get_class(\$e) . PHP_EOL;
    }
} catch (\Exception \$e) {
    echo '❌ Erro geral: ' . \$e->getMessage() . PHP_EOL;
}
"
echo ""

echo "📋 4. Verificando arquivos baixados do storage:"
echo "=========================================="
BACKUP_DIR="$BACKEND_DIR/storage/app/private/backups"
if [ -d "$BACKUP_DIR" ]; then
    echo "Arquivos no diretório local:"
    ls -lh "$BACKUP_DIR" | head -10
else
    echo "Diretório não existe: $BACKUP_DIR"
fi
echo ""

echo "📋 5. Verificando permissões do diretório de backups:"
echo "=========================================="
if [ -d "$BACKUP_DIR" ]; then
    ls -ld "$BACKUP_DIR"
    echo ""
    echo "Permissões dos arquivos:"
    ls -lh "$BACKUP_DIR" | head -5
fi
echo ""

echo "=========================================="
echo "✅ DIAGNÓSTICO CONCLUÍDO"
echo "=========================================="
echo ""
echo "📝 Próximos passos:"
echo "   1. Verifique se o storage está configurado corretamente"
echo "   2. Verifique os logs acima para erros específicos"
echo "   3. Teste o download manual (veja item 3 acima)"
echo ""
