#!/bin/bash
set -e

BACKUP_DIR="./backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
FILENAME="backup_${TIMESTAMP}.sql"

echo "💾 1. Создаём бэкап базы..."
mkdir -p "$BACKUP_DIR"
# гарантируем, что db поднята
docker compose up -d db

# ждём доступности сервиса (не обязательно, но полезно)
# docker compose healthcheck можно добавить в compose, но тут просто пауза:
sleep 3

# Пытаемся mariadb-dump, если нет — mysqldump. Берём MYSQL_* из окружения контейнера.
if ! docker compose exec -T db sh -lc 'command -v mariadb-dump >/dev/null 2>&1 || command -v mysqldump >/dev/null 2>&1'; then
  echo "⚠️  В контейнере нет mariadb-dump/mysqldump. Пропускаю бэкап."
else
  docker compose exec -T db sh -lc '
    DUMP_BIN=$(command -v mariadb-dump || command -v mysqldump);
    "$DUMP_BIN" \
      -h127.0.0.1 \
      -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" \
      --single-transaction --quick --lock-tables=false
  ' > "${BACKUP_DIR}/${FILENAME}" || echo "⚠️  Бэкап не получился (возможно, ещё пустая БД). Продолжаю..."
fi

echo "📥 2. Получаем обновления из git..."
git pull

echo "🔨 3. Собираем контейнеры..."
docker compose build

echo "⬆ 4. Применяем миграции..."
docker compose up -d django
docker compose exec -T django python manage.py makemigrations && docker compose exec -T django python manage.py migrate

echo "🔄 5. Перезапускаем сервисы..."
docker compose up -d

echo "🎉 Деплой завершён успешно!"
