app2-api/modules/locations/locations.model.js
2019-08-27 13:18:44 +02:00

59 lines
1.7 KiB
JavaScript

const Sequelize = require('sequelize');
module.exports = function (sequelize, DataTypes) {
const Location = sequelize.define('Location', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
country: {
type: DataTypes.STRING(125),
allowNull: false
},
city: {
type: DataTypes.STRING(125),
allowNull: false
},
description: {
type: DataTypes.STRING,
},
}, {
tableName: 'locations',
freezeTableName: true,
timestamps: true,
indexes: [{
unique: true,
fields: ['country', 'city']
}]
});
Location.associate = function (models) {
//Location.Events = Location.hasMany(models.Event, { as: 'events', foreignKey: ['country', 'city'] });
//OJO antes de force comentar
// OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers
Location.Multimedias = Location.hasMany(models.Multimedia, {
foreignKey: 'entityId',
as: { singular: 'multimedia', plural: 'multimedias' },
});
};
Location.addScope('includeMultimedias', () => {
return {
include: [{
model: sequelize.models.Multimedia,
as: { singular: 'multimedia', plural: 'multimedias' },
required: false,
include: [{
model: sequelize.models.MultimediaFile,
as: "multimediaFile"
}]
},
]
}
});
return Location;
};