// migrate-sync.js // Этот скрипт создает записи о миграциях в таблице pgmigrations без применения изменений // Используется для синхронизации существующей базы с миграциями require('dotenv').config(); const { Client } = require('pg'); const fs = require('fs'); const path = require('path'); // Подключение к базе данных из переменных окружения const client = new Client({ host: process.env.DB_HOST || 'localhost', port: parseInt(process.env.DB_PORT) || 5432, database: process.env.DB_NAME || 'telegram_tinder_bot', user: process.env.DB_USERNAME || 'postgres', password: process.env.DB_PASSWORD }); async function syncMigrations() { try { console.log('Подключение к базе данных...'); await client.connect(); // Создаем таблицу миграций, если её нет await client.query(` CREATE TABLE IF NOT EXISTS pgmigrations ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, run_on TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ) `); // Получаем список файлов миграций const migrationsDir = path.join(__dirname, '../migrations'); const files = fs.readdirSync(migrationsDir) .filter(file => file.endsWith('.js')) .sort(); // Проверяем, какие миграции уже записаны const { rows: existingMigrations } = await client.query('SELECT name FROM pgmigrations'); const existingNames = existingMigrations.map(m => m.name); // Записываем новые миграции for (const file of files) { const migrationName = file.replace('.js', ''); if (!existingNames.includes(migrationName)) { console.log(`Добавление записи о миграции: ${migrationName}`); await client.query('INSERT INTO pgmigrations(name) VALUES($1)', [migrationName]); } else { console.log(`Миграция ${migrationName} уже записана`); } } console.log('✅ Синхронизация миграций завершена успешно'); await client.end(); } catch (error) { console.error('❌ Ошибка при синхронизации миграций:', error); await client.end(); process.exit(1); } } syncMigrations();