Files
tg_tinder_bot/scripts/legacy/clearDatabase.js
2025-09-18 14:19:49 +09:00

67 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Скрипт для очистки всех таблиц в базе данных
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();