#!/bin/bash
# Procesa jobs JSON dejados por bewpro-provision.php
# Crontab root: * * * * * /root/scripts/process_provision_queue.sh
set -euo pipefail

QUEUE_DIR="/home/resellerprueba2/provision_queue"
SCRIPT="/root/scripts/setup_cd_project2.sh"

shopt -s nullglob
[[ ! -d "$QUEUE_DIR" ]] && exit 0

read_json() {
  local key="$1" file="$2"
  python3 -c "import json,sys; d=json.load(open(sys.argv[1])); print(d.get(sys.argv[2], '') or '')" "$file" "$key" 2>/dev/null || true
}

for job_file in "$QUEUE_DIR"/*.json; do
  [[ -f "$job_file" ]] || continue
  [[ "$job_file" == *.processing ]] && continue
  [[ "$job_file" == *.done ]] && continue

  BASE_NAME=$(read_json base_name "$job_file")
  [[ -z "$BASE_NAME" ]] && { rm -f "$job_file"; continue; }

  proc="${job_file}.processing"
  mv "$job_file" "$proc"

  EMAIL=$(read_json email "$proc")
  TITLE=$(read_json title "$proc")
  PRODUCT=$(read_json product "$proc")
  PASSWORD=$(read_json password "$proc")
  APP_URL=$(read_json app_url "$proc")
  SOURCE_DB=$(read_json source_db "$proc")
  LOG_FILE=$(read_json log_file "$proc")
  [[ -z "$LOG_FILE" ]] && LOG_FILE="/tmp/provision_${BASE_NAME}_$(date +%s).log"

  {
    echo "=== Job $(basename "$proc") ==="
    echo "base=$BASE_NAME source_db=${SOURCE_DB:-<vacío>} app_url=${APP_URL:-<default script>}"
  } >>"$LOG_FILE"

  set +e
  bash "$SCRIPT" \
    "$BASE_NAME" \
    "$EMAIL" \
    "$TITLE" \
    "$PRODUCT" \
    "$PASSWORD" \
    "$APP_URL" \
    "$SOURCE_DB" \
    >>"$LOG_FILE" 2>&1
  rc=$?
  set -e

  mv "$proc" "${proc%.processing}.done"
  echo "[$(date -Iseconds)] base=$BASE_NAME exit=$rc log=$LOG_FILE" >>"$QUEUE_DIR/queue.log"
done
