'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 }