Guest User

Untitled

a guest
Apr 28th, 2019
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const bcrypt = require("bcrypt");
  2.  
  3. module.exports = (sequelize, DataTypes) => {
  4.   const User = sequelize.define(
  5.     "User",
  6.     {
  7.       user_id: {
  8.         type: DataTypes.INTEGER,
  9.         autoIncrement: true,
  10.         primaryKey: true,
  11.         allowNull: false
  12.       },
  13.       username: {
  14.         type: DataTypes.STRING(20),
  15.         unique: true,
  16.         validate: {
  17.           is: /^[^._][a-z0-9._]+$/,
  18.           len: [6, 20]
  19.         },
  20.         allowNull: false
  21.       },
  22.       email: {
  23.         type: DataTypes.STRING,
  24.         unique: true,
  25.         allowNull: false,
  26.         validate: {
  27.           isEmail: true
  28.         }
  29.       },
  30.       password: {
  31.         type: DataTypes.STRING,
  32.         allowNull: false
  33.       },
  34.       role: {
  35.         type: DataTypes.ENUM("user", "admin"),
  36.         defaultValue: "user",
  37.         allowNull: false
  38.       },
  39.       first_name: {
  40.         type: DataTypes.STRING(30),
  41.         validate: {
  42.           isAlpha: true
  43.         }
  44.       },
  45.       last_name: {
  46.         type: DataTypes.STRING(60),
  47.         validate: {
  48.           isAlpha: true
  49.         }
  50.       },
  51.       dept: {
  52.         type: DataTypes.STRING(50)
  53.       },
  54.       year: {
  55.         type: DataTypes.TINYINT
  56.       }
  57.     },
  58.     {}
  59.   );
  60.   User.associate = function(models) {
  61.     // associations can be defined here
  62.     User.hasMany(models.Thread, { foreignKey: "author_id" });
  63.     User.hasMany(models.Post, { foreignKey: "posted_by" });
  64.     User.hasMany(models.Report, { foreignKey: "reported_by" });
  65.     User.belongsToMany(models.Room, { through: "UserRooms" });
  66.     User.hasMany(models.Message, { foreignKey: "sent_by" });
  67.   };
  68.  
  69.   User.addHook("beforeSave", (user, _options) => {
  70.     return bcrypt
  71.       .hash(user.password, 10)
  72.       .then(hash => {
  73.         user.password = hash;
  74.       })
  75.       .catch(err => {
  76.         console.error(err);
  77.       });
  78.   });
  79.  
  80.   User.prototype.getFullName = () => {
  81.     return [this.first_name, this.last_name].join(" ");
  82.   };
  83.   return User;
  84. };
Add Comment
Please, Sign In to add comment