const { DataTypes } = require('sequelize'); module.exports = (sequelize) => { const User = sequelize.define('User', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, username: { type: DataTypes.STRING, allowNull: false, unique: true, validate: { len: [3, 50] } }, email: { type: DataTypes.STRING, allowNull: false, unique: true, validate: { isEmail: true } }, password_hash: { type: DataTypes.STRING, allowNull: false }, first_name: { type: DataTypes.STRING, allowNull: true }, last_name: { type: DataTypes.STRING, allowNull: true }, phone_number: { type: DataTypes.STRING, allowNull: true, comment: 'Phone number for SMS alerts (include country code)' }, role: { type: DataTypes.ENUM('admin', 'operator', 'viewer'), defaultValue: 'viewer', comment: 'User role for permission management' }, is_active: { type: DataTypes.BOOLEAN, defaultValue: true }, sms_alerts_enabled: { type: DataTypes.BOOLEAN, defaultValue: false, comment: 'Whether user wants to receive SMS alerts' }, email_alerts_enabled: { type: DataTypes.BOOLEAN, defaultValue: true, comment: 'Whether user wants to receive email alerts' }, last_login: { type: DataTypes.DATE, allowNull: true }, timezone: { type: DataTypes.STRING, defaultValue: 'UTC', comment: 'User timezone for alert scheduling' }, created_at: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updated_at: { type: DataTypes.DATE, defaultValue: DataTypes.NOW } }, { tableName: 'users', timestamps: true, createdAt: 'created_at', updatedAt: 'updated_at', indexes: [ { fields: ['email'] }, { fields: ['username'] }, { fields: ['phone_number'] } ] }); return User; };