#!/usr/bin/env bash

set -euo pipefail

source /var/www/html/container-runtime.sh

LOG_FILE="/var/www/html/storage/logs/queue.log"
QUEUE_CONNECTION="${QUEUE_CONNECTION:-redis}"
REDIS_QUEUE_NAME="${REDIS_QUEUE:-{default}}"
EMAIL_BULK_QUEUE_NAME="${EMAIL_BULK_QUEUE:-{email-bulk}}"
SMS_BULK_QUEUE_NAME="${SMS_BULK_QUEUE:-{sms-bulk}}"
PUSH_NOTIFICATIONS_QUEUE_NAME="${PUSH_NOTIFICATIONS_QUEUE_NAME:-push-notifications}"
QUEUE_LIST="${EMAIL_BULK_QUEUE_NAME},${REDIS_QUEUE_NAME},${SMS_BULK_QUEUE_NAME},${PUSH_NOTIFICATIONS_QUEUE_NAME}"

ensure_runtime_dirs
touch_runtime_logs

printf -v QUEUE_COMMAND \
    'php artisan queue:work %q --queue=%q --sleep=%q --tries=%q --timeout=%q -v >> %q 2>&1' \
    "${QUEUE_CONNECTION}" \
    "${QUEUE_LIST}" \
    "${QUEUE_WORKER_SLEEP:-3}" \
    "${QUEUE_WORKER_TRIES:-3}" \
    "${QUEUE_WORKER_TIMEOUT:-120}" \
    "${LOG_FILE}"

echo "========== STARTING QUEUE WORKER =========="
echo "Queue connection: ${QUEUE_CONNECTION}"
echo "Listening queues: ${QUEUE_LIST}"

exec_as_www_data "${QUEUE_COMMAND}"
