From ccfe2c8512549468c3c1dda88ec152efcec973f6 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 23 Jul 2019 19:34:28 +0200 Subject: [PATCH] a --- modules/speakers/speaker.model.js | 24 +++++++++++++++++++++++- modules/speakers/speaker.routes.js | 18 ++++++++++++------ modules/speakers/speaker.service.js | 12 ++++++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/modules/speakers/speaker.model.js b/modules/speakers/speaker.model.js index ace36c8..de23592 100644 --- a/modules/speakers/speaker.model.js +++ b/modules/speakers/speaker.model.js @@ -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; }; \ No newline at end of file diff --git a/modules/speakers/speaker.routes.js b/modules/speakers/speaker.routes.js index 8faca6f..03e7d0b 100644 --- a/modules/speakers/speaker.routes.js +++ b/modules/speakers/speaker.routes.js @@ -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 diff --git a/modules/speakers/speaker.service.js b/modules/speakers/speaker.service.js index 9f71662..ab9d28a 100644 --- a/modules/speakers/speaker.service.js +++ b/modules/speakers/speaker.service.js @@ -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({},