#!/bin/bash
#!/bin/bash

set -o errexit
set -o pipefail
set -o nounset

# Configurações ajustáveis via variáveis de ambiente
PORT=${GUNICORN_PORT:-8005}
WORKERS=${GUNICORN_WORKERS:-$(( $(nproc) * 2 + 1 ))}
TIMEOUT=${GUNICORN_TIMEOUT:-120}
MAX_REQUESTS=${GUNICORN_MAX_REQUESTS:-1000}

# Aplica migrações do banco de dados (com tratamento de erro)
python /app/manage.py migrate --noinput || {
    echo "⚠️ Falha nas migrações do banco de dados!";
    exit 1;
}

# Coleta arquivos estáticos
python /app/manage.py collectstatic --noinput

# Verifica e comprime arquivos (se compressor ativado)
compress_enabled() {
    python << END
import sys
from environ import Env

env = Env(COMPRESS_ENABLED=(bool, True))
sys.exit(0 if env('COMPRESS_ENABLED') else 1)
END
}

if compress_enabled; then
    python /app/manage.py compress --verbosity=0 || {
        echo "⚠️ Falha ao comprimir arquivos (django-compressor pode estar desativado)";
    }
fi

# Inicia o Gunicorn com configurações otimizadas
exec /usr/local/bin/gunicorn config.wsgi:application \
    --bind 0.0.0.0:${PORT} \
    --workers ${WORKERS} \
    --timeout ${TIMEOUT} \
    --max-requests ${MAX_REQUESTS} \
    --worker-class sync \
    --name diarios_oficiais_alems \
    --access-logfile - \
    --error-logfile - \
    --chdir=/app

