63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
// migrate-sync.js
|
||
// Этот скрипт создает записи о миграциях в таблице pgmigrations без применения изменений
|
||
// Используется для синхронизации существующей базы с миграциями
|
||
|
||
const { Client } = require('pg');
|
||
const fs = require('fs');
|
||
const path = require('path');
|
||
|
||
// Подключение к базе данных
|
||
const client = new Client({
|
||
host: '192.168.0.102',
|
||
port: 5432,
|
||
database: 'telegram_tinder_bot',
|
||
user: 'trevor',
|
||
password: 'Cl0ud_1985!'
|
||
});
|
||
|
||
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();
|