Files
DLE/backend/update_verification_table.js

77 lines
2.8 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.

// Скрипт для обновления таблицы verification_codes
const { Pool } = require('pg');
require('dotenv').config();
// Создаем подключение к базе данных
const pool = new Pool({
host: process.env.POSTGRES_HOST || 'localhost',
port: process.env.POSTGRES_PORT || 5432,
database: process.env.POSTGRES_DB || 'dapp_business',
user: process.env.POSTGRES_USER || 'postgres',
password: process.env.POSTGRES_PASSWORD || 'postgres',
});
async function updateVerificationTable() {
try {
console.log('Начинаем обновление таблицы verification_codes...');
// Проверяем, существует ли таблица
const checkTableResult = await pool.query(`
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'verification_codes'
);
`);
const tableExists = checkTableResult.rows[0].exists;
if (!tableExists) {
console.log('Таблица verification_codes не существует. Пропускаем обновление.');
return;
}
// Проверяем, разрешает ли уже колонка null значения
const checkColumnResult = await pool.query(`
SELECT is_nullable
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'verification_codes'
AND column_name = 'user_id';
`);
if (checkColumnResult.rows.length > 0 && checkColumnResult.rows[0].is_nullable === 'YES') {
console.log('Колонка user_id уже разрешает NULL значения. Пропускаем обновление.');
return;
}
// Начинаем транзакцию
await pool.query('BEGIN');
// Изменяем ограничение для поля user_id
await pool.query(`
ALTER TABLE verification_codes
ALTER COLUMN user_id DROP NOT NULL;
`);
// Добавляем комментарий к колонке
await pool.query(`
COMMENT ON COLUMN verification_codes.user_id IS 'ID пользователя (может быть NULL для временных кодов)';
`);
// Фиксируем транзакцию
await pool.query('COMMIT');
console.log('Таблица verification_codes успешно обновлена!');
} catch (error) {
// Откатываем транзакцию в случае ошибки
await pool.query('ROLLBACK');
console.error('Ошибка при обновлении таблицы verification_codes:', error);
} finally {
// Закрываем соединение с базой данных
await pool.end();
}
}
// Выполняем обновление
updateVerificationTable();