'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('user_activity', { activity_id: { type: Sequelize.BIGINT, primaryKey: true, autoIncrement: true }, user_id: { type: Sequelize.BIGINT, allowNull: false, references: { model: 'users', key: 'user_id' }, onDelete: 'CASCADE' }, session_id: { type: Sequelize.BIGINT, allowNull: true }, action: { type: Sequelize.STRING(100), allowNull: false }, entity_type: { type: Sequelize.STRING(50), allowNull: true }, entity_id: { type: Sequelize.BIGINT, allowNull: true }, details: { type: Sequelize.JSONB, allowNull: true }, created_at: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.literal('CURRENT_TIMESTAMP') }, }); await queryInterface.addIndex('user_activity', { fields: ['user_id'], name: 'idx_ua_user_id' }); await queryInterface.addIndex('user_activity', { fields: ['action'], name: 'idx_ua_action' }); await queryInterface.addIndex('user_activity', { fields: ['created_at'], name: 'idx_ua_created_at' }); }, async down(queryInterface) { await queryInterface.dropTable('user_activity'); }, };