thread.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. let slug = require('slug')
  2. module.exports = (sequelize, DataTypes) => {
  3. let Thread = sequelize.define('Thread', {
  4. name: {
  5. type: DataTypes.STRING,
  6. set (val) {
  7. this.setDataValue('name', val)
  8. this.setDataValue('slug', slug(val).toLowerCase())
  9. }
  10. },
  11. slug: DataTypes.STRING
  12. }, {
  13. classMethods: {
  14. associate (models) {
  15. Thread.belongsTo(models.User)
  16. Thread.belongsTo(models.Category)
  17. Thread.hasMany(models.Post)
  18. },
  19. includeOptions () {
  20. let models = sequelize.models
  21. return [
  22. { model: models.User, attributes: ['username', 'createdAt', 'updatedAt', 'id'] },
  23. models.Category,
  24. {
  25. model: models.Post,
  26. include: [
  27. { model: models.User, attributes: ['username', 'createdAt', 'id'] },
  28. {
  29. model: models.Post, as: 'ReplyingTo', include:
  30. [{ model: models.User, attributes: ['username', 'id'] }]
  31. }, {
  32. model: models.Post, as: 'Replies', include:
  33. [{ model: models.User, attributes: ['username', 'id'] }]
  34. }
  35. ]
  36. }
  37. ]
  38. }
  39. }
  40. })
  41. return Thread
  42. }