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