const bcrypt = require('bcryptjs'); const { DataTypes } = require('sequelize'); module.exports = (sequelize) => { const User = sequelize.define("user", { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: DataTypes.INTEGER }, firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING, allowNull: false }, dateOfBirth: { type: DataTypes.DATE, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true }, password: { type: DataTypes.STRING, allowNull: false } }, { sequelize, modelName: 'User', tableName: "Users", hooks: { beforeCreate: async (user) => { const salt = await bcrypt.genSalt(10); user.password = await bcrypt.hash(user.password, salt); } } }); User.prototype.validPassword = function (password) { return bcrypt.compareSync(password, this.password); }; return User; };