// @flow import { DataTypes, sequelize } from '../sequelize'; import randomstring from 'randomstring'; const ApiKey = sequelize.define( 'apiKeys', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, name: DataTypes.STRING, secret: { type: DataTypes.STRING, unique: true }, // TODO: remove this, as it's redundant with associate below userId: { type: DataTypes.UUID, allowNull: false, references: { model: 'users', }, }, }, { tableName: 'apiKeys', paranoid: true, hooks: { beforeValidate: key => { key.secret = randomstring.generate(38); }, }, } ); ApiKey.associate = models => { ApiKey.belongsTo(models.User, { as: 'user', foreignKey: 'userId', }); }; export default ApiKey;