123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- let randomColor = require('randomcolor')
- module.exports = (sequelize, DataTypes) => {
- let Category = sequelize.define('Category', {
- name: {
- type: DataTypes.STRING,
- unique: true,
- set (val) {
- let underscored = val.trim().replace(/\s/g, '_').toUpperCase()
- this.setDataValue('name', val)
- this.setDataValue('value', underscored)
- }
- },
- value: {
- type: DataTypes.STRING,
- unique: true
- },
- color: {
- type: DataTypes.STRING,
- defaultValue () {
- return randomColor({ luminosity: 'bright' })
- }
- }
- }, {
- classMethods: {
- associate (models) {
- Category.hasMany(models.Thread)
- },
- includeOptions (order, threadLimit) {
- let models = sequelize.models
- let options = {
- model: models.Thread,
- include: [
- models.Category,
- { model: models.User, attributes: ['username', 'createdAt', 'id', 'color'] },
- {
- model: models.Post, limit: 1, order: [['id', order]], include:
- [{ model: models.User, attributes: ['username', 'id'] }]
- }
- ]
- }
- if(threadLimit) options.limit = threadLimit
- return [options]
- }
- }
- })
- return Category
- }
|