'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('trusted_devices', { id: { type: Sequelize.BIGINT, primaryKey: true, autoIncrement: true }, user_id: { type: Sequelize.BIGINT, allowNull: false, references: { model: 'users', key: 'user_id' }, onUpdate: 'CASCADE', onDelete: 'CASCADE' }, device_token_hash: { type: Sequelize.TEXT, allowNull: false }, fingerprint_hash: { type: Sequelize.TEXT, allowNull: false }, last_session_id: { type: Sequelize.BIGINT, allowNull: true, references: { model: 'user_sessions', key: 'session_id' }, onUpdate: 'CASCADE', onDelete: 'SET NULL' }, expires_at: { type: Sequelize.DATE, allowNull: false }, revoked_at: { type: Sequelize.DATE, allowNull: true }, createdBy: { type: Sequelize.BIGINT, allowNull: true }, updatedBy: { type: Sequelize.BIGINT, allowNull: true }, deletedBy: { type: Sequelize.BIGINT, allowNull: true }, createdAt: { type: Sequelize.DATE, allowNull: false }, updatedAt: { type: Sequelize.DATE, allowNull: false }, deletedAt: { type: Sequelize.DATE, allowNull: true }, }); await queryInterface.addIndex('trusted_devices', ['user_id']); await queryInterface.addIndex('trusted_devices', ['user_id', 'fingerprint_hash'], { unique: true, name: 'trusted_devices_user_fingerprint_unique', }); }, async down(queryInterface) { await queryInterface.dropTable('trusted_devices'); }, };