#!/bin/bash
# Script para limpar fila de jobs sobrecarregada

echo "=============================================="
echo "LIMPANDO FILA DE JOBS"
echo "=============================================="
echo ""

cd /var/www/gestorstream/backend

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

echo -e "${YELLOW}[1/5] Verificando quantidade de jobs na fila...${NC}"
php artisan tinker --execute="
\$total = \DB::table('jobs')->count();
\$failed = \DB::table('failed_jobs')->count();
echo 'Jobs pendentes: ' . \$total . PHP_EOL;
echo 'Jobs falhados: ' . \$failed . PHP_EOL;
"
echo ""

echo -e "${YELLOW}[2/5] Analisando tipos de jobs...${NC}"
php artisan tinker --execute="
\$jobs = \DB::table('jobs')
    ->selectRaw('queue, COUNT(*) as total')
    ->groupBy('queue')
    ->get();
foreach (\$jobs as \$job) {
    echo 'Queue [' . \$job->queue . ']: ' . \$job->total . ' jobs' . PHP_EOL;
}
"
echo ""

echo -e "${YELLOW}[3/5] Parando workers ativos...${NC}"
# Listar processos de workers
ps aux | grep "queue:work" | grep -v grep

echo ""
echo "Deseja parar todos os workers e limpar a fila? (s/n)"
read -r resposta

if [ "$resposta" = "s" ] || [ "$resposta" = "S" ]; then
    echo ""
    echo -e "${YELLOW}[4/5] Parando workers...${NC}"
    pkill -f "queue:work"
    sleep 2
    ps aux | grep "queue:work" | grep -v grep || echo "Todos workers parados"
    echo ""
    
    echo -e "${YELLOW}[5/5] Limpando fila de jobs...${NC}"
    php artisan tinker --execute="
    \$deleted = \DB::table('jobs')->delete();
    echo 'Jobs removidos: ' . \$deleted . PHP_EOL;
    echo 'Fila limpa!' . PHP_EOL;
    "
    echo ""
    
    echo -e "${GREEN}✓ FILA LIMPA COM SUCESSO!${NC}"
    echo ""
    echo "Reiniciando worker..."
    nohup php artisan queue:work --sleep=3 --tries=3 --timeout=3600 > storage/logs/queue.log 2>&1 &
    echo "Worker reiniciado em background"
    echo ""
else
    echo ""
    echo "Operação cancelada"
fi

echo "=============================================="
echo "CONCLUÍDO"
echo "=============================================="
