#!/bin/bash

# Скрипт для запуска всех микросервисов на всех интерфейсах для Android-эмулятора

echo "🚀 Запускаем все микросервисы для Android-эмулятора..."

# Перейти в директорию проекта
cd "$(dirname "$0")" || { echo "Не удалось перейти в директорию проекта"; exit 1; }

# Активировать виртуальное окружение
source .venv/bin/activate || { echo "Не удалось активировать виртуальное окружение"; exit 1; }

# Получить текущий IP адрес
IP=$(hostname -I | awk '{print $1}')

echo "🔗 Локальный IP адрес: $IP"
echo "📱 Android эмулятор сможет подключиться по адресу: http://$IP:8000"

# Функция для остановки процесса на указанном порту
stop_service() {
    local port=$1
    if lsof -ti:$port > /dev/null; then
        echo "⚠️ Останавливаем процесс на порту $port..."
        lsof -ti:$port | xargs kill -9
        sleep 1
    fi
}

# Останавливаем все сервисы, если они запущены
echo "🛑 Останавливаем все сервисы, если они запущены..."
stop_service 8000  # API Gateway
stop_service 8001  # User Service
stop_service 8002  # Emergency Service
stop_service 8003  # Location Service
stop_service 8004  # Calendar Service
stop_service 8005  # Notification Service

# Экспортируем PYTHONPATH
export PYTHONPATH="${PWD}:${PYTHONPATH}"

# Функция для запуска сервиса
run_service() {
    local name=$1
    local port=$2
    local path=$3
    
    echo "✅ Запускаем $name на порту $port..."
    cd $path || { echo "Не удалось перейти в директорию $path"; return; }
    python -m uvicorn main:app --host 0.0.0.0 --port $port --reload &
    cd $OLDPWD || { echo "Не удалось вернуться в исходную директорию"; return; }
    sleep 2
}

# Запускаем все сервисы
echo "🚀 Запускаем все сервисы..."
run_service "User Service" 8001 "services/user_service"
run_service "Emergency Service" 8002 "services/emergency_service"
run_service "Location Service" 8003 "services/location_service"
run_service "Calendar Service" 8004 "services/calendar_service"
run_service "Notification Service" 8005 "services/notification_service"
run_service "API Gateway" 8000 "services/api_gateway"

echo ""
echo "📋 Сервисы доступны по следующим адресам:"
echo "   📡 API Gateway: http://$IP:8000"
echo "   👤 User Service: http://$IP:8001"
echo "   🚨 Emergency Service: http://$IP:8002"
echo "   📍 Location Service: http://$IP:8003"
echo "   📅 Calendar Service: http://$IP:8004"
echo "   🔔 Notification Service: http://$IP:8005"
echo ""
echo "📱 Для Android эмулятора используйте адрес: http://$IP:8000"
echo ""
echo "⚠️ Для остановки всех сервисов выполните: pkill -f uvicorn"
echo ""
echo "🔍 Мониторинг логов запущен. Нажмите Ctrl+C для выхода (сервисы продолжат работать)"

# Мониторим логи
tail -f services/*.log