This commit is contained in:
David Arranz 2019-07-23 19:34:28 +02:00
parent 4925f969c1
commit ccfe2c8512
3 changed files with 47 additions and 7 deletions

View File

@ -55,7 +55,19 @@ module.exports = function (sequelize, DataTypes) {
defaultScope: { defaultScope: {
where: { where: {
state: 'publish' state: 'publish'
} },
include: [
{
model: sequelize.models.SpeakerType,
as: 'type'
},
/* {
model: sequelize.models.Value,
as: 'values',
required: false,
},
*/
]
}, },
}); });
@ -111,6 +123,16 @@ module.exports = function (sequelize, DataTypes) {
} }
}); });
Speaker.addScope('includeValues', () => {
return {
include: [{
model: sequelize.models.Value,
as: 'values',
attributes: ['id', 'name'],
required: false,
}]
}
});
return Speaker; return Speaker;
}; };

View File

@ -10,16 +10,20 @@ const SortMiddleware = require('../../middlewares/sort');
//const entityValidation = require('./entity.validations'); //const entityValidation = require('./entity.validations');
const speakerController = require('./speaker.controller'); const speakerController = require('./speaker.controller');
const generalInvalidFields = [
'userId', 'createdAt', 'updatedAt', 'state',
];
// Todos los ponentes // Todos los ponentes
routes.get('/speakers', routes.get('/speakers',
isLoggedUser, isLoggedUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: ['userId', 'createdAt', 'updatedAt'] invalidFields: generalInvalidFields
}), }),
PaginateMiddleware.middleware(), PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "name" }), SortMiddleware.middleware({ default: "name" }),
speakerController.find({ speakerController.find({
scopes: ['defaultScope'], scopes: ['defaultScope', 'includeValues'],
}) })
); );
@ -52,10 +56,12 @@ routes.get('/speakers/last',
// Un ponente // Un ponente
routes.get('/speakers/:id', routes.get('/speakers/:id',
isLoggedUser, isLoggedUser,
/*FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: ['createdAt'] invalidFields: generalInvalidFields
}),*/ }),
speakerController.findOne() speakerController.findOne({
scopes: ['defaultScope', 'includeValues', 'includeMultimedias'],
})
); );
// Dar ponentes similares a uno dado // Dar ponentes similares a uno dado

View File

@ -6,6 +6,7 @@ const { generateService, parseParamsToFindOptions } = require('../../helpers/ser
const Sequelize = require('sequelize'); const Sequelize = require('sequelize');
const models = require('../../core/models'); const models = require('../../core/models');
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
...multimedia, ...multimedia,
...multimedia.MultimediaFile, ...multimedia.MultimediaFile,
@ -17,6 +18,12 @@ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
userId: undefined, userId: undefined,
})); }));
const valuesComposer = (values) => values.map(value => ({
id: value.id,
name: value.name,
}));
const socialNetworksComposer = (speaker, context) => { const socialNetworksComposer = (speaker, context) => {
return { return {
rrss: { rrss: {
@ -42,6 +49,11 @@ const speakerComposer = (speaker, context) => {
multimedias = multimediaComposer(speaker.multimedias) multimedias = multimediaComposer(speaker.multimedias)
}; };
speaker.typename = speaker.type.name;
delete speaker.type;
speaker.values = valuesComposer(speaker.values);
const rrss = socialNetworksComposer(speaker, context); const rrss = socialNetworksComposer(speaker, context);
return Object.assign({}, return Object.assign({},