hunt-blacklist-backend/migrations/20260721030413-add_rating_t...

46 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
const tableName = 'BlacklistReports'; // Убедитесь, что имя таблицы совпадает
const columns = ['toxic', 'cheater', 'afk', 'useless', 'griefer', 'smurf'];
for (const column of columns) {
// 1. Сначала конвертируем данные внутри колонки через SQL-запрос.
// В MySQL true — это 1, а false — это 0.
await queryInterface.sequelize.query(`
UPDATE \`${tableName}\`
SET \`${column}\` = CASE WHEN \`${column}\` = 1 THEN 10 ELSE 0 END
`);
// 2. Теперь безопасно меняем тип самой колонки на TINYINT
await queryInterface.changeColumn(tableName, column, {
type: Sequelize.TINYINT,
allowNull: false,
defaultValue: 0
});
}
},
async down (queryInterface, Sequelize) {
const tableName = 'BlacklistReports';
const columns = ['toxic', 'cheater', 'afk', 'useless', 'griefer', 'smurf'];
for (const column of columns) {
// Откат: если оценка меньше 5, возвращаем 1 (true), иначе 0 (false)
await queryInterface.sequelize.query(`
UPDATE \`${tableName}\`
SET \`${column}\` = CASE WHEN \`${column}\` < 5 THEN 1 ELSE 0 END
`);
// Возвращаем тип BOOLEAN
await queryInterface.changeColumn(tableName, column, {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false
});
}
}
};