'use strict'; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up(queryInterface, Sequelize) { await queryInterface.addColumn( { schema: 'community', tableName: 'image' }, 'is_moderated_hidden', { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false } ).catch(() => {}); await queryInterface.addColumn( { schema: 'community', tableName: 'erotic_video' }, 'is_moderated_hidden', { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false } ).catch(() => {}); await queryInterface.createTable( { schema: 'community', tableName: 'erotic_content_report' }, { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, allowNull: false }, reporter_id: { type: Sequelize.INTEGER, allowNull: false, references: { model: { schema: 'community', tableName: 'user' }, key: 'id' }, onDelete: 'CASCADE' }, target_type: { type: Sequelize.STRING(20), allowNull: false }, target_id: { type: Sequelize.INTEGER, allowNull: false }, reason: { type: Sequelize.STRING(80), allowNull: false }, note: { type: Sequelize.TEXT, allowNull: true }, status: { type: Sequelize.STRING(20), allowNull: false, defaultValue: 'open' }, action_taken: { type: Sequelize.STRING(40), allowNull: true }, handled_by: { type: Sequelize.INTEGER, allowNull: true, references: { model: { schema: 'community', tableName: 'user' }, key: 'id' }, onDelete: 'SET NULL' }, handled_at: { type: Sequelize.DATE, allowNull: true }, created_at: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.literal('NOW()') }, updated_at: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.literal('NOW()') } } ).catch(() => {}); }, async down(queryInterface) { await queryInterface.dropTable({ schema: 'community', tableName: 'erotic_content_report' }).catch(() => {}); await queryInterface.removeColumn({ schema: 'community', tableName: 'erotic_video' }, 'is_moderated_hidden').catch(() => {}); await queryInterface.removeColumn({ schema: 'community', tableName: 'image' }, 'is_moderated_hidden').catch(() => {}); } };