text: const { Model, DataTypes } = require("sequelize");
  const bcrypt = require("bcrypt");
  const sequelize = require("../config/connection");
  
  class User extends Model {
  	// method to run on instance data to check password
  	checkPassword(loginPw) {
  		return bcrypt.compareSync(loginPw, this.password);
  	}
  }
  
  User.init(
  	{
  		id: {
  			type: DataTypes.INTEGER,
  			allowNull: false,
  			primaryKey: true,
  			autoIncrement: true,
  		},
  		username: {
  			type: DataTypes.STRING,
  			allowNull: false,
  			unique:true
  		},
  	
  		password: {
  			type: DataTypes.STRING,
  			allowNull: false,
  			validate: {
  				len: [4],
  			},
  		},
  	},
  	{
  		hooks: {
  			// set up beforeCreate lifecycle "hook" functionality
  			async beforeCreate(newUserData) {
  				newUserData.password = await bcrypt.hash(newUserData.password, 10);
  				return newUserData;
  			},
  
  			async beforeUpdate(updatedUserData) {
  				updatedUserData.password = await bcrypt.hash(
  					updatedUserData.password,
  					10
  				);
  				return updatedUserData;
  			},
  		},
  		sequelize,
  		timestamps: true,
  		freezeTableName: true,
  		underscored: true,
  		modelName: "user",
  	}
  );
  
  module.exports = User;
  