76 lines
3.3 KiB
Bash
Executable File
76 lines
3.3 KiB
Bash
Executable File
#!/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
|