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: {
where: {
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;
};

View File

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

View File

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