const { DataTypes } = require('sequelize'); module.exports = { up: async (queryInterface, Sequelize) => { await queryInterface.createTable('feedback', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, allowNull: false }, user_id: { type: DataTypes.UUID, allowNull: false, references: { model: 'users', key: 'id' }, onUpdate: 'CASCADE', onDelete: 'CASCADE' }, message_id: { type: DataTypes.UUID, allowNull: true, references: { model: 'messages', key: 'id' }, onUpdate: 'CASCADE', onDelete: 'SET NULL' }, feedback_type: { type: DataTypes.ENUM('positive', 'negative', 'correction', 'suggestion'), allowNull: false }, rating: { type: DataTypes.INTEGER, allowNull: true, validate: { min: 1, max: 5 } }, comment: { type: DataTypes.TEXT, allowNull: true }, corrected_content: { type: DataTypes.TEXT, allowNull: true }, is_processed: { type: DataTypes.BOOLEAN, defaultValue: false, allowNull: false }, processing_notes: { type: DataTypes.TEXT, allowNull: true }, metadata: { type: DataTypes.JSONB, defaultValue: {}, allowNull: false }, created_at: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW }, updated_at: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW } }); // Create indexes await queryInterface.addIndex('feedback', ['user_id']); await queryInterface.addIndex('feedback', ['message_id']); await queryInterface.addIndex('feedback', ['feedback_type']); await queryInterface.addIndex('feedback', ['is_processed']); await queryInterface.addIndex('feedback', ['created_at']); }, down: async (queryInterface, Sequelize) => { await queryInterface.dropTable('feedback'); } };