app2-api/modules/events/events_questions.model.js
2019-09-27 12:22:09 +02:00

70 lines
2.0 KiB
JavaScript

'use strict';
const moment = require('moment');
const Sequelize = require('sequelize');
moment.locale('es');
module.exports = function (sequelize, DataTypes) {
const EventQuestion = sequelize.define('EventQuestion', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
question: {
type: DataTypes.TEXT,
allowNull: true
},
answer: {
type: DataTypes.TEXT,
},
anonimous: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
answered: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
discared: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
}, {
tableName: 'events_questions',
freezeTableName: true,
timestamps: true,
});
EventQuestion.associate = function (models) {
EventQuestion.Event = EventQuestion.belongsTo(models.Event, { foreignKey: 'eventId' });
EventQuestion.Speaker = EventQuestion.belongsTo(models.Speaker, { foreignKey: 'speakerId' });
EventQuestion.User = EventQuestion.belongsTo(models.User, { foreignKey: 'userId' });
};
EventQuestion.addScope('includeUser', () => {
return {
include: [{
model: sequelize.models.User,
}],
}
});
EventQuestion.addScope('includeSpeaker', () => {
return {
include: [{
model: sequelize.models.Speaker,
include: [{
model: sequelize.models.Multimedia,
as: { singular: 'multimedia', plural: 'multimedias' },
required: false,
include: [{
model: sequelize.models.MultimediaFile,
as: "multimediaFile"
}]
}]
}]
}
});
return EventQuestion;
};