#!/bin/bash

# Скрипт для создания бэкапов БД PROD и DEV

set -e

BACKUP_DIR="./backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

echo "=========================================="
echo "Создание бэкапов БД (PROD и DEV)"
echo "=========================================="
echo ""

# Создать директорию для бэкапов
mkdir -p "$BACKUP_DIR"

# Функция для создания бэкапа
backup_db() {
    local CONTAINER_NAME=$1
    local DB_USER=$2
    local DB_NAME=$3
    local BACKUP_NAME=$4
    
    echo "Создание бэкапа: $BACKUP_NAME"
    
    # Проверить, что контейнер запущен
    if ! docker ps | grep -q "$CONTAINER_NAME"; then
        echo "⚠️  Контейнер $CONTAINER_NAME не запущен, пропускаем..."
        return 1
    fi
    
    BACKUP_FILE="$BACKUP_DIR/${BACKUP_NAME}_${TIMESTAMP}.sql.gz"
    
    # Создать бэкап
    if docker exec "$CONTAINER_NAME" pg_dumpall -U "$DB_USER" -c 2>/dev/null | gzip > "$BACKUP_FILE"; then
        BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
        echo "  ✓ Бэкап создан: $BACKUP_FILE ($BACKUP_SIZE)"
        return 0
    else
        echo "  ✗ Ошибка создания бэкапа для $BACKUP_NAME"
        return 1
    fi
}

# Бэкап PROD БД
echo "--- PROD БД ---"
backup_db "platform_prod_db" "platform_prod_user" "platform_prod_db" "platform_prod_db"

echo ""

# Бэкап DEV БД
echo "--- DEV БД ---"
backup_db "platform_dev_db" "platform_dev_user" "platform_dev_db" "platform_dev_db"

echo ""
echo "=========================================="
echo "Бэкапы сохранены в: $BACKUP_DIR"
echo "=========================================="
echo ""
echo "Для восстановления PROD БД:"
echo "  gunzip < $BACKUP_DIR/platform_prod_db_*.sql.gz | docker exec -i platform_prod_db psql -U platform_prod_user -d postgres"
echo ""
echo "Для восстановления DEV БД:"
echo "  gunzip < $BACKUP_DIR/platform_dev_db_*.sql.gz | docker exec -i platform_dev_db psql -U platform_dev_user -d postgres"
