89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function (sequelize, DataTypes) {
|
|
const Speaker = sequelize.define('Speaker', {
|
|
id: {
|
|
type: DataTypes.UUID,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
description: {
|
|
type: DataTypes.TEXT,
|
|
},
|
|
short_description: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
slogan: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
twitter: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
facebook: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
youtube: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
linkedin: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
instagram: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
web: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
state: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
defaultValue: 'borrador'
|
|
},
|
|
typeId: {
|
|
type: DataTypes.UUID,
|
|
foreignKey: true,
|
|
},
|
|
}, {
|
|
tableName: 'speakers',
|
|
freezeTableName: true,
|
|
timestamps: true,
|
|
|
|
defaultScope: {
|
|
where: {
|
|
state: 'publish'
|
|
}
|
|
},
|
|
});
|
|
|
|
Speaker.associate = function (models) {
|
|
|
|
Speaker.Type = Speaker.belongsTo(models.SpeakerType, { foreignKey: 'typeId', as: "type" });
|
|
Speaker.UserCreate = Speaker.belongsTo(models.User, { foreignKey: 'userId', as: "user" });
|
|
Speaker.Values = Speaker.belongsToMany(models.Value, {
|
|
through: models.SpeakerValue,
|
|
as: 'values',
|
|
foreignKey: 'speakerId'
|
|
});
|
|
|
|
Speaker.EventDetails = Speaker.hasMany(models.EventDetail, { foreignKey: 'speakerId', as: "eventdetails" });
|
|
Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions" });
|
|
|
|
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
|
|
foreignKey: 'entityId',
|
|
as: { singular: 'multimedia', plural: 'multimedias' }
|
|
});
|
|
|
|
/*
|
|
Speaker.Multimedias = Speaker.belongsToMany(models.MultimediaFile, {
|
|
through: models.MultimediaSpeaker,
|
|
foreignKey: 'speakerId'
|
|
});
|
|
*/
|
|
};
|
|
|
|
return Speaker;
|
|
}; |