pre-deploy commit
This commit is contained in:
81
scripts/legacy/clearDatabase.mjs
Normal file
81
scripts/legacy/clearDatabase.mjs
Normal 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();
|
||||
Reference in New Issue
Block a user