From 2880dd26a2108c133cd1f8d601cf98e95885c0ac Mon Sep 17 00:00:00 2001 From: david Date: Thu, 25 Jul 2019 19:06:12 +0200 Subject: [PATCH] aa --- helpers/composes.helper.js | 102 ++++++++++++++++++++++++++++ modules/entities/entity.service.js | 11 +-- modules/events/event.service.js | 52 +------------- modules/speakers/speaker.service.js | 56 +-------------- 4 files changed, 107 insertions(+), 114 deletions(-) create mode 100644 helpers/composes.helper.js diff --git a/helpers/composes.helper.js b/helpers/composes.helper.js new file mode 100644 index 0000000..cfee390 --- /dev/null +++ b/helpers/composes.helper.js @@ -0,0 +1,102 @@ +'use strict'; + +const valuesComposer = (values) => values.map(value => ({ + id: value.id, + name: value.name, +})); + +const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ + ...multimedia, + ...multimedia.MultimediaFile, + type: multimedia.type, + media_type: multimedia.MultimediaFile.type, + MultimediaFile: undefined, + createdAt: undefined, + updatedAt: undefined, + userId: undefined, +})); + +const socialNetworksComposer = (speaker, context) => { + return { + rrss: { + twitter: speaker.twitter ? speaker.twitter : null, + facebook: speaker.facebook ? speaker.facebook : null, + youtube: speaker.youtube ? speaker.youtube : null, + linkedin: speaker.linkedin ? speaker.linkedin : null, + instagram: speaker.instagram ? speaker.instagram : null, + web: speaker.web ? speaker.web : null + }, + twitter: undefined, + facebook: undefined, + youtube: undefined, + linkedin: undefined, + instagram: undefined, + web: undefined + }; +}; + +const speakerComposer = (speaker, context) => { + let multimedias = [] + if (context.scopes.includes('includeMultimedias')) { + 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({}, + speaker, + rrss, + { multimedias: multimedias }, + ) +}; + + +const eventComposer = (event, context) => { + + if (context.scopes.includes('includeVenue')) { + delete event.venue.updatedAt; + delete event.venue.createdAt; + }; + + let multimedias = [] + if (context.scopes.includes('includeMultimedias')) { + multimedias = multimediaComposer(event.multimedias) + }; + + let speakers = [] + if (context.scopes.includes('includeSpeakers')) { + speakers = event.details.map((detail) => ({ + order: detail.order, + ...speakerComposer(detail.speaker), + })) + }; + + return Object.assign({}, + event, + { multimedias: multimedias }, + { details: undefined }, + { speakers: speakers } + ) +}; + +const entityComposer = (entity, context) => { + + delete entity.contact_person; + delete entity.contact_email; + + return Object.assign({}, + entity, + ) +}; + + +module.exports = { + entityComposer, + speakerComposer, + eventComposer +} \ No newline at end of file diff --git a/modules/entities/entity.service.js b/modules/entities/entity.service.js index 2219ca7..3803fbd 100644 --- a/modules/entities/entity.service.js +++ b/modules/entities/entity.service.js @@ -4,18 +4,9 @@ const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); +const { entityComposer } = require('../../helpers/composes.helper'); -const entityComposer = (entity, context) => { - - delete entity.contact_person; - delete entity.contact_email; - - return Object.assign({}, - entity, - ) -}; - const extraMethods = { afterFetchAll: (result, params, context) => { diff --git a/modules/events/event.service.js b/modules/events/event.service.js index 685bb1a..37f18b6 100644 --- a/modules/events/event.service.js +++ b/modules/events/event.service.js @@ -6,59 +6,13 @@ const moment = require('moment'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const Sequelize = require('sequelize'); const models = require('../../core/models'); - - -const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ - ...multimedia, - ...multimedia.MultimediaFile, - type: multimedia.type, - media_type: multimedia.MultimediaFile.type, - MultimediaFile: undefined, - createdAt: undefined, - updatedAt: undefined, - userId: undefined, -})); - -const speakerComposer = (speaker, context) => { - delete speaker.createdAt; - delete speaker.updatedAt; - return {...speaker, - multimedias: multimediaComposer(speaker.multimedias), - } -} - -const eventComposer = (event, context) => { - - if (context.scopes.includes('includeVenue')) { - delete event.venue.updatedAt; - delete event.venue.createdAt; - }; - - let multimedias = [] - if (context.scopes.includes('includeMultimedias')) { - multimedias = multimediaComposer(event.multimedias) - }; - - let speakers = [] - if (context.scopes.includes('includeSpeakers')) { - speakers = event.details.map((detail) => ({ - order: detail.order, - ... speakerComposer(detail.speaker), - })) - }; - - return Object.assign({}, - event, - { multimedias: multimedias }, - { details: undefined }, - { speakers: speakers } - ) -}; +const { eventComposer } = require('../../helpers/composes.helper'); const extraMethods = { + afterFetchAll: (result, params, context) => { - + if (!result.count) { return result; } diff --git a/modules/speakers/speaker.service.js b/modules/speakers/speaker.service.js index ab9d28a..d2fefcf 100644 --- a/modules/speakers/speaker.service.js +++ b/modules/speakers/speaker.service.js @@ -5,63 +5,9 @@ const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const Sequelize = require('sequelize'); const models = require('../../core/models'); +const { speakerComposer } = require('../../helpers/composes.helper'); -const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ - ...multimedia, - ...multimedia.MultimediaFile, - type: multimedia.type, - media_type: multimedia.MultimediaFile.type, - MultimediaFile: undefined, - createdAt: undefined, - updatedAt: undefined, - userId: undefined, -})); - -const valuesComposer = (values) => values.map(value => ({ - id: value.id, - name: value.name, -})); - - -const socialNetworksComposer = (speaker, context) => { - return { - rrss: { - twitter: speaker.twitter ? speaker.twitter : null, - facebook: speaker.facebook ? speaker.facebook : null, - youtube: speaker.youtube ? speaker.youtube : null, - linkedin: speaker.linkedin ? speaker.linkedin : null, - instagram: speaker.instagram ? speaker.instagram : null, - web: speaker.web ? speaker.web : null - }, - twitter: undefined, - facebook: undefined, - youtube: undefined, - linkedin: undefined, - instagram: undefined, - web: undefined - }; -}; - -const speakerComposer = (speaker, context) => { - let multimedias = [] - if (context.scopes.includes('includeMultimedias')) { - 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({}, - speaker, - rrss, - { multimedias: multimedias }, - ) -}; const extraMethods = { afterFetchAll: (result, params, context) => {