#!/usr/bin/env bash
# run_all.sh — Spustí všechny dev-env služby na pozadí
# Použití: ./run_all.sh
set -euo pipefail

DEV_ENV_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_PYTHON="${DEV_ENV_DIR}/.venv/bin/python"
PID_DIR="${DEV_ENV_DIR}/.pids"
LOG_DIR="${DEV_ENV_DIR}/.logs"

mkdir -p "${PID_DIR}" "${LOG_DIR}"

# Kontrola, že venv existuje
if [[ ! -x "${VENV_PYTHON}" ]]; then
    echo "ERROR: venv neexistuje. Spust nejprve ./setup_env.sh"
    exit 1
fi

# Nastavení proměnných prostředí
export DEV_ENV_API_KEY="${DEV_ENV_API_KEY:-changeme-default-key}"
export HF_TOKEN="${HF_TOKEN:-}"
export DEV_ENV_MODELS_DIR="${DEV_ENV_MODELS_DIR:-${DEV_ENV_DIR}/models}"
export PYTHONUNBUFFERED=1

echo "=== Spouštění dev-env služeb ==="

# 1. FastAPI chat API
if [[ -f "${PID_DIR}/fastapi.pid" ]]; then
    echo "FastAPI již běží (PID: $(cat ${PID_DIR}/fastapi.pid))"
else
    echo "Spouštím FastAPI..."
    nohup "${VENV_PYTHON}" "${DEV_ENV_DIR}/starter/web/fastapi_app.py" \
        > "${LOG_DIR}/fastapi.log" 2>&1 &
    echo $! > "${PID_DIR}/fastapi.pid"
    echo "  -> http://localhost:8080 (API klíč: ${DEV_ENV_API_KEY})"
fi

# 2. Ollama (pokud není spuštěno)
if curl -s http://localhost:11434/api/tags >/dev/null 2>&1; then
    echo "Ollama již běží na localhost:11434"
else
    echo "Spouštím Ollama..."
    nohup ollama serve > "${LOG_DIR}/ollama.log" 2>&1 &
    echo $! > "${PID_DIR}/ollama.pid"
    sleep 2
fi

echo ""
echo "=== Všechny služby běží ==="
echo "  FastAPI chat:  http://localhost:8080"
echo "  Ollama LLM:    http://localhost:11434"
echo "  Logy:          ${LOG_DIR}/"
echo "  PID soubory:   ${PID_DIR}/"
echo ""
echo "Zastavit vše: ./stop_all.sh"
echo "Zobrazit logy: tail -f ${LOG_DIR}/*.log"