module.exports = function (sequelize, DataTypes) { const Comment = sequelize.define('Comment', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, entityId: { type: DataTypes.UUID, allowNull: false, }, entityName: { type: DataTypes.STRING, allowNull: false, }, content: { type: DataTypes.STRING, allowNull: false }, /*entity: { type: DataTypes.VIRTUAL, get: function () { const name = this.get('entityName'); const id = this.get('entityId'); let modelName = ''; switch (name) { case 'post': modelName = 'Post'; break; case 'speaker': modelName = 'Speaker' break; case 'event': modelName = 'Event'; break; default: break; } return sequelize.models[modelName].findOne(id); } }*/ }, { indexes: [{ unique: false, fields: ['entityId'] }], tableName: 'comments', freezeTableName: true, timestamps: true, }); Comment.associate = function (models) { Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', constraints: false, as: 'user' }); //Comment.Conference = Comment.belongsTo(models.Conference, { foreignKey: 'conferenceId', constraints: false }); //Comment.Post = Comment.belongsTo(models.Post, { foreignKey: 'postId', constraints: false }); //Comment.Speaker = Comment.belongsTo(models.Speaker, { foreignKey: 'speakerId', constraints: false }); }; return Comment; };