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
|
||
});
|
||
}
|
||
}
|
||
};
|