migrations fix
This commit is contained in:
@@ -42,14 +42,34 @@ 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
|
||||
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 "❌ Ошибка при применении миграций!"
|
||||
exit 1
|
||||
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
|
||||
|
||||
46
bin/compile_ts_migrations.sh
Normal file
46
bin/compile_ts_migrations.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
# compile_ts_migrations.sh - Скрипт для компиляции TS миграций в JS
|
||||
|
||||
echo "🔄 Компиляция TypeScript миграций в JavaScript..."
|
||||
|
||||
# Проверка наличия TypeScript файлов
|
||||
if [ ! -f "migrations/*.ts" ] && [ ! -d "node_modules/typescript" ]; then
|
||||
echo "📦 Установка TypeScript..."
|
||||
npm install --no-save typescript
|
||||
fi
|
||||
|
||||
# Создание временного tsconfig для миграций
|
||||
echo "📝 Создание временного tsconfig.json для миграций..."
|
||||
cat > migrations/tsconfig.json << EOL
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2020",
|
||||
"module": "commonjs",
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"outDir": "../temp_migrations"
|
||||
},
|
||||
"include": ["./*.ts"]
|
||||
}
|
||||
EOL
|
||||
|
||||
# Компиляция TS файлов
|
||||
echo "🔄 Компиляция TypeScript миграций..."
|
||||
npx tsc -p migrations/tsconfig.json
|
||||
|
||||
# Подтверждение
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Миграции успешно скомпилированы в директорию temp_migrations/"
|
||||
|
||||
# Проверка, были ли созданы файлы
|
||||
file_count=$(find temp_migrations -name "*.js" | wc -l)
|
||||
echo "📊 Скомпилировано файлов: $file_count"
|
||||
else
|
||||
echo "❌ Ошибка при компиляции миграций!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Очистка временных файлов
|
||||
rm migrations/tsconfig.json
|
||||
37
bin/run_full_migration.sh
Normal file
37
bin/run_full_migration.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# run_full_migration.sh - Полный процесс миграции с компиляцией TypeScript
|
||||
|
||||
echo "🚀 Запуск полного процесса миграции..."
|
||||
|
||||
# Проверка наличия файлов TS
|
||||
if find migrations -name "*.ts" -quit; then
|
||||
echo "📋 Обнаружены TypeScript миграции. Компилируем их..."
|
||||
|
||||
# Компиляция TS файлов
|
||||
./bin/compile_ts_migrations.sh
|
||||
|
||||
# Проверка результата
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Ошибка компиляции TS миграций!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "ℹ️ TypeScript миграции не обнаружены, пропускаем компиляцию."
|
||||
mkdir -p temp_migrations
|
||||
fi
|
||||
|
||||
# Копирование JS миграций
|
||||
echo "📂 Копирование JS-миграций..."
|
||||
find migrations -name "*.js" -exec cp {} temp_migrations/ \;
|
||||
|
||||
# Запуск миграций
|
||||
echo "🔄 Применение всех миграций..."
|
||||
./bin/apply_migrations.sh
|
||||
|
||||
# Проверка результата
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Процесс миграции успешно завершен!"
|
||||
else
|
||||
echo "❌ Ошибка в процессе миграции."
|
||||
exit 1
|
||||
fi
|
||||
101
bin/run_sql_migrations.sh
Normal file
101
bin/run_sql_migrations.sh
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
# run_sql_migrations.sh - Ручное применение SQL-миграций
|
||||
|
||||
echo "🚀 Запуск SQL-миграций..."
|
||||
|
||||
# Загрузка переменных окружения из .env
|
||||
if [ -f .env ]; then
|
||||
echo "📝 Загрузка переменных окружения из .env..."
|
||||
set -o allexport
|
||||
source .env
|
||||
set +o allexport
|
||||
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
|
||||
|
||||
# Вывод информации о подключении
|
||||
echo "🔍 Используемые параметры подключения:"
|
||||
echo "DB_HOST: $DB_HOST"
|
||||
echo "DB_PORT: $DB_PORT"
|
||||
echo "DB_NAME: $DB_NAME"
|
||||
echo "DB_USERNAME: $DB_USERNAME"
|
||||
echo "DB_PASSWORD: ********"
|
||||
|
||||
# Функция для применения SQL файлов из директории
|
||||
apply_sql_files() {
|
||||
local directory=$1
|
||||
echo "🔍 Ищем SQL-файлы в директории $directory..."
|
||||
|
||||
if [ -d "$directory" ]; then
|
||||
# Получаем список файлов в порядке времени создания
|
||||
files=$(find "$directory" -name "*.sql" | sort)
|
||||
|
||||
if [ -z "$files" ]; then
|
||||
echo "⚠️ SQL-файлы не найдены в $directory"
|
||||
return 0
|
||||
fi
|
||||
|
||||
for sql_file in $files; do
|
||||
echo "🔄 Применение миграции $sql_file..."
|
||||
|
||||
# Проверяем, есть ли уже запись о миграции в таблице migrations
|
||||
filename=$(basename "$sql_file")
|
||||
exists=$(PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -t -c "SELECT EXISTS(SELECT 1 FROM migrations WHERE name='$filename')" 2>/dev/null)
|
||||
|
||||
# Если таблицы migrations не существует, создаем её
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "📝 Таблица migrations не найдена. Создаем..."
|
||||
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -c "
|
||||
CREATE TABLE IF NOT EXISTS migrations (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
" 2>/dev/null
|
||||
exists=" f"
|
||||
fi
|
||||
|
||||
# Если миграция уже применена, пропускаем
|
||||
if [[ "$exists" == *"t"* ]]; then
|
||||
echo "⏭️ Миграция $filename уже применена, пропускаем"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Применяем миграцию
|
||||
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -f "$sql_file"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Миграция $filename успешно применена"
|
||||
# Записываем в таблицу migrations
|
||||
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -c "
|
||||
INSERT INTO migrations (name) VALUES ('$filename')
|
||||
" 2>/dev/null
|
||||
else
|
||||
echo "❌ Ошибка при применении миграции $filename"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "⚠️ Директория $directory не найдена"
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Применяем SQL миграции из всех возможных папок
|
||||
echo "🔄 Применение SQL-миграций из src/database/migrations..."
|
||||
apply_sql_files "src/database/migrations"
|
||||
|
||||
echo "🔄 Применение SQL-миграций из migrations/sql..."
|
||||
apply_sql_files "migrations/sql"
|
||||
|
||||
echo "🔄 Применение SQL-миграций из migrations (если есть)..."
|
||||
apply_sql_files "migrations"
|
||||
|
||||
echo "✅ Процесс применения SQL-миграций завершен!"
|
||||
Reference in New Issue
Block a user