#!/bin/bash

# Скрипт для полной пересборки PROD окружения с бэкапом БД

set -e

echo "=========================================="
echo "Полная пересборка PROD окружения"
echo "=========================================="
echo ""
echo "⚠️  ВНИМАНИЕ: Это пересоберёт все контейнеры без кэша"
echo ""

cd "$(dirname "$0")"

# Шаг 1: Создать бэкап БД
echo "Шаг 1: Создание бэкапа БД..."
if [ -f "./backup-all-db.sh" ]; then
    ./backup-all-db.sh
else
    echo "⚠️  Скрипт backup-all-db.sh не найден, создаём бэкап вручную..."
    mkdir -p ./backups
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    if docker ps | grep -q platform_prod_db; then
        docker exec platform_prod_db pg_dumpall -U platform_prod_user -c | gzip > "./backups/platform_prod_db_backup_${TIMESTAMP}.sql.gz"
        echo "✓ Бэкап создан: ./backups/platform_prod_db_backup_${TIMESTAMP}.sql.gz"
    else
        echo "⚠️  Контейнер БД не запущен, пропускаем бэкап"
    fi
fi

echo ""
echo "Шаг 2: Остановка контейнеров..."
docker compose down

echo ""
echo "Шаг 3: Пересборка образов без кэша..."
echo "Это может занять несколько минут..."
docker compose build --no-cache --pull

echo ""
echo "Шаг 4: Запуск контейнеров..."
docker compose up -d

echo ""
echo "Шаг 5: Ожидание запуска БД..."
sleep 10

echo ""
echo "Шаг 6: Применение миграций..."
docker exec platform_prod_web python manage.py migrate

echo ""
echo "Шаг 7: Проверка статуса контейнеров..."
docker compose ps

echo ""
echo "=========================================="
echo "✓ Пересборка завершена!"
echo "=========================================="
echo ""
echo "Проверьте логи:"
echo "  docker compose logs -f"
echo ""
echo "Если нужно создать суперпользователя:"
echo "  docker exec -it platform_prod_web python manage.py createsuperuser"
