67 lines
2.7 KiB
JavaScript
67 lines
2.7 KiB
JavaScript
// Скрипт для очистки всех таблиц в базе данных
|
||
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');
|
||
|
||
// Отключаем внешние ключи на время выполнения (если они используются)
|
||
// await client.query('SET session_replication_role = \'replica\'');
|
||
|
||
// Очистка таблиц в порядке, учитывающем зависимости
|
||
console.log('Очистка таблицы сообщений...');
|
||
await client.query('TRUNCATE TABLE messages CASCADE');
|
||
|
||
console.log('Очистка таблицы просмотров профилей...');
|
||
await client.query('TRUNCATE TABLE profile_views CASCADE');
|
||
|
||
console.log('Очистка таблицы свайпов...');
|
||
await client.query('TRUNCATE TABLE swipes CASCADE');
|
||
|
||
console.log('Очистка таблицы матчей...');
|
||
await client.query('TRUNCATE TABLE matches CASCADE');
|
||
|
||
console.log('Очистка таблицы профилей...');
|
||
await client.query('TRUNCATE TABLE profiles CASCADE');
|
||
|
||
console.log('Очистка таблицы пользователей...');
|
||
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();
|