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