category.js 829 B

123456789101112131415161718192021222324252627282930313233343536373839
  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 () {
  22. let models = sequelize.models
  23. return [{
  24. model: models.Thread,
  25. include: [
  26. { model: models.User, attributes: ['username', 'createdAt', 'id'] },
  27. {
  28. model: models.Post, limit: 1, include:
  29. [{ model: models.User, attributes: ['username', 'id'] }]
  30. }
  31. ]
  32. }]
  33. }
  34. }
  35. })
  36. return Category
  37. }