post.js 962 B

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