forked from kaverti/website
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
let randomColor = require('randomcolor')
|
|
|
|
module.exports = (sequelize, DataTypes) => {
|
|
let ItemCategory = sequelize.define('ItemCategory', {
|
|
name: {
|
|
type: DataTypes.STRING(191),
|
|
unique: true,
|
|
allowNull: false,
|
|
validate: {
|
|
notEmpty: {
|
|
msg: 'The category name can\'t be empty'
|
|
},
|
|
isString (val) {
|
|
if(typeof val !== 'string') {
|
|
throw new sequelize.ValidationError('The category name must be a string')
|
|
}
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: DataTypes.STRING(191),
|
|
unique: true
|
|
},
|
|
locked: {
|
|
type: DataTypes.BOOLEAN,
|
|
default: false
|
|
}
|
|
}, {
|
|
hooks: {
|
|
beforeCreate (category) {
|
|
if(!category.name) {
|
|
throw new sequelize.ValidationError('The category name cant\'t be empty')
|
|
} else {
|
|
let underscored = category.name.trim().replace(/\s/g, '_').toUpperCase()
|
|
category.value = underscored
|
|
}
|
|
}
|
|
}})
|
|
ItemCategory.associate = function (models) {
|
|
ItemCategory.hasMany(models.Item)
|
|
}
|
|
|
|
return ItemCategory
|
|
}
|