#!/bin/bash # apply_migrations.sh - Скрипт для ручного применения миграций echo "🔄 Ручное применение миграций базы данных..." # Загрузка переменных окружения из .env if [ -f .env ]; then echo "📝 Загрузка переменных окружения из .env..." export $(grep -v '^#' .env | xargs) else echo "⚠️ Файл .env не найден, используем значения по умолчанию" export DB_HOST="localhost" export DB_PORT="5432" export DB_NAME="telegram_tinder_bot" export DB_USERNAME="postgres" export DB_PASSWORD="postgres" fi # Проверка на существование директории миграций if [ ! -d "migrations" ] && [ ! -d "src/database/migrations" ]; then echo "❌ Не найдены директории с миграциями!" exit 1 fi # Вывод информации о подключении echo "🔍 Используемые параметры подключения:" echo "DB_HOST: $DB_HOST" echo "DB_PORT: $DB_PORT" echo "DB_NAME: $DB_NAME" echo "DB_USERNAME: $DB_USERNAME" echo "DB_PASSWORD: ********" # Проверка подключения к базе данных echo "🔍 Проверка подключения к базе данных..." if command -v pg_isready >/dev/null; then pg_isready -h $DB_HOST -p $DB_PORT -U $DB_USERNAME if [ $? -ne 0 ]; then echo "❌ Не удалось подключиться к базе данных!" exit 1 fi else echo "⚠️ Утилита pg_isready не найдена, пропускаем проверку" fi # Копирование миграций JS в отдельную директорию echo "📂 Копирование только JS-миграций во временную директорию..." mkdir -p temp_migrations find migrations -name "*.js" -exec cp {} temp_migrations/ \; # Применение миграций echo "🔄 Применение миграций с помощью node-pg-migrate..." DATABASE_URL="postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME" npx node-pg-migrate up --migrations-dir=temp_migrations # Проверка результата if [ $? -eq 0 ]; then echo "✅ Миграции успешно применены!" else echo "❌ Ошибка при применении миграций!" echo "⚠️ Пытаемся применить миграции из других источников..." # Попробуем применить SQL-миграции напрямую if [ -d "src/database/migrations" ]; then echo "📂 Найдены SQL-миграции. Пытаемся применить их напрямую..." for sql_file in src/database/migrations/*.sql; do if [ -f "$sql_file" ]; then echo "🔄 Применение миграции $sql_file..." PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -f "$sql_file" || echo "⚠️ Ошибка при применении $sql_file" fi done fi fi # Очистка временных файлов echo "🧹 Очистка временных файлов..." rm -rf temp_migrations