mainly functional matching

This commit is contained in:
2025-09-18 11:42:18 +09:00
parent e275a9856b
commit 85027a7747
15 changed files with 1179 additions and 77 deletions

81
scripts/clearDatabase.mjs Normal file
View File

@@ -0,0 +1,81 @@
// Скрипт для очистки всех таблиц в базе данных
import { Pool } from 'pg';
import dotenv from 'dotenv';
// Загружаем переменные окружения из .env файла
dotenv.config();
const pool = new Pool({
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT || '5432'),
database: process.env.DB_NAME,
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD
});
async function clearDatabase() {
const client = await pool.connect();
try {
console.log('Начинаем очистку базы данных...');
// Начинаем транзакцию
await client.query('BEGIN');
// Получаем список существующих таблиц
const tablesResult = await client.query(`
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_type = 'BASE TABLE'
`);
const tables = tablesResult.rows.map(row => row.table_name);
console.log('Найдены таблицы:', tables.join(', '));
// Очистка таблиц в порядке, учитывающем зависимости
if (tables.includes('messages')) {
console.log('Очистка таблицы messages...');
await client.query('TRUNCATE TABLE messages CASCADE');
}
if (tables.includes('swipes')) {
console.log('Очистка таблицы swipes...');
await client.query('TRUNCATE TABLE swipes CASCADE');
}
if (tables.includes('matches')) {
console.log('Очистка таблицы matches...');
await client.query('TRUNCATE TABLE matches CASCADE');
}
if (tables.includes('profiles')) {
console.log('Очистка таблицы profiles...');
await client.query('TRUNCATE TABLE profiles CASCADE');
}
if (tables.includes('users')) {
console.log('Очистка таблицы users...');
await client.query('TRUNCATE TABLE users CASCADE');
}
// Возвращаем внешние ключи (если они использовались)
// await client.query('SET session_replication_role = \'origin\'');
// Фиксируем транзакцию
await client.query('COMMIT');
console.log('Все таблицы успешно очищены!');
} catch (error) {
// В случае ошибки откатываем транзакцию
await client.query('ROLLBACK');
console.error('Произошла ошибка при очистке базы данных:', error);
} finally {
// Освобождаем клиента
client.release();
// Закрываем пул соединений
await pool.end();
}
}
// Запускаем функцию очистки
clearDatabase();