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
}
