category.js 938 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. module.exports = (sequelize, DataTypes) => {
  2. let Category = sequelize.define('Category', {
  3. name: {
  4. type: DataTypes.STRING,
  5. unique: true,
  6. set (val) {
  7. let underscored = val.trim().replace(/\s/g, '_').toUpperCase()
  8. this.setDataValue('name', val)
  9. this.setDataValue('value', underscored)
  10. }
  11. },
  12. value: {
  13. type: DataTypes.STRING,
  14. unique: true
  15. }
  16. }, {
  17. classMethods: {
  18. associate (models) {
  19. Category.hasMany(models.Thread)
  20. },
  21. includeOptions (threadLimit) {
  22. let models = sequelize.models
  23. let options = {
  24. model: models.Thread,
  25. include: [
  26. models.Category,
  27. { model: models.User, attributes: ['username', 'createdAt', 'id'] },
  28. {
  29. model: models.Post, limit: 1, include:
  30. [{ model: models.User, attributes: ['username', 'id'] }]
  31. }
  32. ]
  33. }
  34. if(threadLimit) options.limit = threadLimit
  35. return [options]
  36. }
  37. }
  38. })
  39. return Category
  40. }