#!/bin/bash

# Простой скрипт развертывания с упрощенным Dockerfile
# Использование: ./deploy-simple.sh

set -e

echo "🚀 Быстрое развертывание Global-IT24 (упрощенный режим)..."

# Проверка наличия .env файла
if [ ! -f .env ]; then
    echo "⚠️  Файл .env не найден. Создаю из .env.example..."
    cp .env.example .env
    echo "📝 Отредактируйте файл .env и запустите скрипт снова."
    exit 1
fi

# Загрузка переменных окружения
source .env

# Остановка предыдущей версии
echo "🛑 Остановка предыдущей версии..."
docker compose down 2>/dev/null || true

# Сборка с упрощенным Dockerfile
echo "⚡ Быстрая сборка с упрощенным Dockerfile (15-20 минут)..."
echo "💡 Используется Dockerfile.simple - проще и быстрее для первой сборки"

# Создаём реальный yarn.lock (symlink не работает в Docker)
if [ -L nextjs_space/yarn.lock ] && [ -e nextjs_space/yarn.lock ]; then
    # Валидный symlink - преобразуем в файл
    echo "🔗 Преобразуем symlink yarn.lock в реальный файл..."
    cp -L nextjs_space/yarn.lock nextjs_space/yarn.lock.tmp
    rm nextjs_space/yarn.lock
    mv nextjs_space/yarn.lock.tmp nextjs_space/yarn.lock
    echo "✅ yarn.lock преобразован в реальный файл"
else
    # Битая symlink или файл отсутствует - удаляем и пропускаем
    if [ -L nextjs_space/yarn.lock ]; then
        echo "🗑️  Удаляем битую symlink на yarn.lock..."
        rm nextjs_space/yarn.lock
    fi
    echo "⚠️  yarn.lock будет создан при установке зависимостей"
fi

# Создаем временный docker-compose файл с Dockerfile.simple
cat > docker-compose.simple.yml << 'EOFCOMPOSE'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.simple
      args:
        NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3000}
    container_name: global_it24_web
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "3000:3000"
    networks:
      - app-network
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:15-alpine
    container_name: global_it24_db
    restart: unless-stopped
    environment:
      POSTGRES_DB: ${POSTGRES_DB:-global_it24}
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:

networks:
  app-network:
    driver: bridge
EOFCOMPOSE

# Сборка и запуск
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
docker compose -f docker-compose.simple.yml build
docker compose -f docker-compose.simple.yml up -d

# Ожидание готовности
echo "⏳ Ожидание готовности сервиса..."
sleep 10

# Проверка статуса
if docker compose -f docker-compose.simple.yml ps | grep -q "Up"; then
    echo "✅ Развертывание успешно завершено!"
    echo ""
    echo "📊 Статус контейнеров:"
    docker compose -f docker-compose.simple.yml ps
    echo ""
    echo "🌐 Сайт доступен по адресу: http://localhost:3000"
    echo "🌐 Внешний доступ через Traefik: ${NEXT_PUBLIC_SITE_URL}"
    echo ""
    echo "📝 Для просмотра логов: docker compose -f docker-compose.simple.yml logs -f"
    echo "📝 Для остановки: docker compose -f docker-compose.simple.yml down"
    echo ""
    echo "⚠️  Не удаляйте файл docker-compose.simple.yml - он нужен для управления контейнерами!"
else
    echo "❌ Ошибка при запуске контейнера!"
    echo "📝 Логи:"
    docker compose -f docker-compose.simple.yml logs
    exit 1
fi
