Masterchoc

Untitled

Jan 27th, 2018
170
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Created by Mel on 04/08/2016.
  3.  */
  4.  
  5. module.exports = function(db, Sequelize)
  6. {
  7.     var User = db.define('user',
  8.     {
  9.         id: {
  10.             type: Sequelize.UUID,
  11.             defaultValue: Sequelize.UUIDV1,
  12.             primaryKey: true
  13.         },
  14.         firstname: {
  15.             type: Sequelize.STRING,
  16.             allowNull: false,
  17.             validate: {
  18.                 len: {
  19.                     args: 3,
  20.                     msg: "First Name must be at least 3 characters in length"
  21.                 }
  22.             }
  23.         },
  24.         lastname: {
  25.             typahe: Sequelize.STRING,
  26.             allowNull: false,
  27.             validate: {
  28.                 len: {
  29.                     args: 3,
  30.                     msg: "Last Name must be at least 3 characters in length"
  31.                 }
  32.             }
  33.         },
  34.         biography: {
  35.             type: Sequelize.STRING,
  36.             allowNull: true
  37.         },
  38.         birthdate: {
  39.             type: Sequelize.DATE,
  40.             allowNull: true
  41.         },
  42.         phone: {
  43.             type: Sequelize.STRING,
  44.             allowNull: true
  45.         },
  46.         city: {
  47.             type: Sequelize.STRING,
  48.             allowNull: true
  49.         },
  50.         country: {
  51.             type: Sequelize.STRING,
  52.             allowNull: true
  53.         },
  54.         postal_code: {
  55.             type: Sequelize.STRING,
  56.             allowNull: true
  57.         },
  58.         road_number: {
  59.             type: Sequelize.STRING,
  60.             allowNull: true
  61.         },
  62.         road_name: {
  63.             type: Sequelize.STRING,
  64.             allowNull: true
  65.         },
  66.         email: {
  67.             type: Sequelize.STRING,
  68.             allowNull: false,
  69.             unique: true,
  70.             validate: {
  71.                 len: {
  72.                     args: [6, 128],
  73.                     msg: "Email address must be between 6 and 128 characters in length"
  74.                 },
  75.                 isEmail: {
  76.                     msg: "Email address must be valid"
  77.                 }
  78.             }
  79.         },
  80.         password: {
  81.             type: Sequelize.STRING,
  82.             allowNull: false,
  83.             validate: {
  84.                 len: {
  85.                     args: 3
  86.                 }
  87.             }
  88.         },
  89.         activated: {
  90.             type: Sequelize.BOOLEAN,
  91.             defaultValue: 0
  92.         },
  93.         ban: {
  94.             type: Sequelize.BOOLEAN,
  95.             defaultValue: 0
  96.         },
  97.         ban_start: {
  98.             type: Sequelize.DATE,
  99.             allowNull: true
  100.         },
  101.         ban_end: {
  102.             type: Sequelize.DATE,
  103.             allowNull: true
  104.         },
  105.         role: {
  106.             type: Sequelize.ENUM('user', 'admin')
  107.         },
  108.         passwordAt: {
  109.             type: Sequelize.DATE,
  110.             allowNull: true
  111.         },
  112.         lastSeen: {
  113.             type: Sequelize.DATE,
  114.             allowNull: true
  115.         },
  116.         activatedAt: {
  117.             type: Sequelize.DATE,
  118.             allowNull: true
  119.         },
  120.         resetAt: {
  121.             type: Sequelize.DATE,
  122.             allowNull: true
  123.         },
  124.         resetKey: {
  125.             type: Sequelize.STRING
  126.         },
  127.         activationKey:
  128.         {
  129.             type: Sequelize.STRING
  130.         }
  131.     },
  132.     {
  133.         classMethods:
  134.         {
  135.             associate: function(models)
  136.             {
  137.                 User.hasMany(models.walls);
  138.                 User.hasMany(models.posts);
  139.                 User.hasMany(models.groups);
  140.                 User.hasMany(models.payments);
  141.                 User.hasMany(models.room_locations);
  142.                 User.hasMany(models.conversations);
  143.                 User.hasMany(models.conversation_users);
  144.  
  145.                 User.belongsToMany(models.users, {
  146.                     as: 'friends',
  147.                     through: 'friend',
  148.                     foreignKey: 'userId',
  149.                     otherKey: 'friendId'
  150.                 });
  151.             }
  152.         }
  153.     });
  154.  
  155.     return User;
  156. };
RAW Paste Data