1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- let slug = require('slug')
- module.exports = (sequelize, DataTypes) => {
- let Thread = sequelize.define('Thread', {
- name: {
- type: DataTypes.TEXT,
- set (val) {
- this.setDataValue('name', val)
- this.setDataValue('slug', slug(val).toLowerCase())
- }
- },
- slug: DataTypes.TEXT
- }, {
- classMethods: {
- associate (models) {
- Thread.belongsTo(models.User)
- Thread.belongsTo(models.Category)
- Thread.hasMany(models.Post)
- },
- includeOptions (lastId, limit, previousId) {
- let models = sequelize.models
- let where = {}
- let order = [['id', 'ASC']]
- if(lastId !== null) {
- where.id = { $gt: lastId }
- } else {
- where.id = { $lt: previousId }
- order = [['id', 'DESC']]
- }
- return [
- { model: models.User, attributes: ['username', 'createdAt', 'color', 'updatedAt', 'id'] },
- models.Category,
- {
- model: models.Post,
- where,
- order,
- limit: limit,
- include: [
- { model: models.Thread, attributes: ['slug'] },
- { model: models.User, attributes: ['username', 'createdAt', 'id', 'color'] },
- {
- model: models.Post, as: 'Replies', include:
- [{ model: models.User, attributes: ['username', 'id', 'color'] }]
- }
- ]
- }
- ]
- }
- }
- })
- return Thread
- }
|