index.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const _ = require('lodash')
  2. const Sequelize = require('sequelize')
  3. const config = require('../../config')
  4. const bcrypt = require('bcrypt')
  5. const sequelize = new Sequelize(config.sequelize)
  6. const User = sequelize.define('user', {
  7. id: {
  8. type: Sequelize.UUID,
  9. defaultValue: Sequelize.UUIDV1,
  10. primaryKey: true
  11. },
  12. email: {
  13. type: Sequelize.STRING,
  14. unique: true,
  15. validate: {
  16. isEmail: true
  17. }
  18. },
  19. name: Sequelize.STRING,
  20. password: Sequelize.STRING,
  21. resetToken: Sequelize.STRING
  22. }, {
  23. indexes: [
  24. {
  25. unique: true,
  26. fields: ['email']
  27. }
  28. ],
  29. setterMethods: {
  30. password(value) {
  31. this.setDataValue('password', bcrypt.hashSync(value, config.auth.saltRounds))
  32. }
  33. }
  34. })
  35. User.prototype.sanitize = function() {
  36. return _.omit(this.dataValues, 'password', 'resetToken')
  37. }
  38. const Session = sequelize.define('session', {
  39. id: {
  40. type: Sequelize.UUID,
  41. primaryKey: true
  42. },
  43. startTimestamp: Sequelize.DATE,
  44. endTimestamp: Sequelize.DATE
  45. })
  46. module.exports = {
  47. init: () => sequelize.sync(),
  48. User,
  49. Session
  50. }