#!/bin/bash

# Скрипт для быстрого запуска всех необходимых микросервисов Women Safety App

# Цвета для вывода
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
BLUE="\033[0;34m"
RED="\033[0;31m"
NC="\033[0m" # No Color

echo -e "${BLUE}🚀 Запуск Women Safety App Microservices${NC}"

# Переход в директорию проекта
cd "$(dirname "$0")" || { echo -e "${RED}❌ Ошибка: Не удалось перейти в директорию проекта${NC}"; exit 1; }

# Проверка виртуального окружения
if [ ! -d "venv" ]; then
    echo -e "${YELLOW}⚠️ Виртуальное окружение не найдено. Создаю новое...${NC}"
    python3 -m venv venv
    source venv/bin/activate
    python -m pip install -r requirements.txt
else
    echo -e "${GREEN}✅ Виртуальное окружение найдено${NC}"
    source venv/bin/activate
fi

# Установка PYTHONPATH
export PYTHONPATH="${PWD}:${PYTHONPATH}"

# Функция для запуска сервиса
start_service() {
    local name=$1
    local port=$2
    
    echo -e "${YELLOW}🔄 Запуск $name на порту $port...${NC}"
    
    # Запускаем в фоновом режиме
    python -m uvicorn services.${name}.main:app --host 0.0.0.0 --port $port &
    
    # Сохраняем PID
    echo $! > /tmp/${name}.pid
    
    # Небольшая задержка для запуска
    sleep 2
    
    # Проверка запуска
    if curl -s http://localhost:$port/health > /dev/null; then
        echo -e "${GREEN}✅ $name успешно запущен на порту $port${NC}"
    else
        echo -e "${RED}❌ Ошибка: $name не запущен на порту $port${NC}"
    fi
}

# Создание скрипта миграции БД
cat > migrate_db.py << 'EOF'
import asyncio

async def run_migrations():
    from shared.database import init_db
    print("🔄 Выполнение миграций базы данных...")
    await init_db()
    print("✅ Миграции успешно выполнены!")

if __name__ == "__main__":
    asyncio.run(run_migrations())
EOF

# Запуск миграций
echo -e "${YELLOW}🔄 Применение миграций базы данных...${NC}"
python migrate_db.py

# Запуск всех микросервисов
start_service "user_service" 8001
start_service "emergency_service" 8002
start_service "location_service" 8003
start_service "calendar_service" 8004
start_service "notification_service" 8005

# IP для мобильного доступа
EXTERNAL_IP=$(hostname -I | awk '{print $1}')
echo -e "${BLUE}📱 IP для мобильного приложения: ${EXTERNAL_IP}:8000${NC}"

# Запуск API Gateway
echo -e "${GREEN}🚪 Запуск API Gateway на порту 8000...${NC}"
python -m uvicorn services.api_gateway.main:app --host 0.0.0.0 --port 8000