46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
|
|
'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
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|