Cambios en speakers
This commit is contained in:
parent
49822f6737
commit
e85682ce30
@ -85,5 +85,32 @@ module.exports = function (sequelize, DataTypes) {
|
|||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Speaker.addScope('featured', {
|
||||||
|
order: [
|
||||||
|
['updatedAt', 'DESC']
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
Speaker.addScope('last', {
|
||||||
|
order: [
|
||||||
|
['createdAt', 'DESC']
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
Speaker.addScope('includeMultimedias', () => {
|
||||||
|
return {
|
||||||
|
include: [{
|
||||||
|
model: sequelize.models.Multimedia,
|
||||||
|
as: 'multimedias',
|
||||||
|
required: false,
|
||||||
|
include: [{
|
||||||
|
model: sequelize.models.MultimediaFile,
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
return Speaker;
|
return Speaker;
|
||||||
};
|
};
|
||||||
@ -13,34 +13,40 @@ const speakerController = require('./speaker.controller');
|
|||||||
// Todos los ponentes
|
// Todos los ponentes
|
||||||
routes.get('/speakers',
|
routes.get('/speakers',
|
||||||
//isLoggedUser,
|
//isLoggedUser,
|
||||||
/*FieldMiddleware.middleware({
|
FieldMiddleware.middleware({
|
||||||
invalidFields: ['user', 'createdAt']
|
invalidFields: ['userId', 'createdAt', 'updatedAt']
|
||||||
}),*/
|
}),
|
||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
SortMiddleware.middleware({ default: "name" }),
|
SortMiddleware.middleware({ default: "name" }),
|
||||||
speakerController.find
|
speakerController.find({
|
||||||
|
scopes: ['defaultScope'],
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
// Ponentes destacados
|
// Ponentes destacados
|
||||||
routes.get('/speakers/featured',
|
routes.get('/speakers/featured',
|
||||||
//isLoggedUser,
|
//isLoggedUser,
|
||||||
/*FieldMiddleware.middleware({
|
FieldMiddleware.middleware({
|
||||||
invalidFields: ['user', 'createdAt']
|
invalidFields: ['userId', 'createdAt']
|
||||||
}),*/
|
}),
|
||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
SortMiddleware.middleware({ default: "name" }),
|
//SortMiddleware.middleware({ default: "name" }),
|
||||||
speakerController.find
|
speakerController.find({
|
||||||
|
scopes: ['defaultScope', 'featured', 'includeMultimedias'],
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
// Ponentes más recientes
|
// Ponentes más recientes
|
||||||
routes.get('/speakers/last',
|
routes.get('/speakers/last',
|
||||||
//isLoggedUser,
|
//isLoggedUser,
|
||||||
/*FieldMiddleware.middleware({
|
FieldMiddleware.middleware({
|
||||||
invalidFields: ['user', 'createdAt']
|
invalidFields: ['userId']
|
||||||
}),*/
|
}),
|
||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
SortMiddleware.middleware({ default: "-createdAt" }),
|
SortMiddleware.middleware({ default: "-createdAt" }),
|
||||||
speakerController.find
|
speakerController.find({
|
||||||
|
scopes: ['defaultScope', 'last', 'includeMultimedias'],
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
// Un ponente
|
// Un ponente
|
||||||
|
|||||||
@ -6,7 +6,71 @@ 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 extraMethods = {
|
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)
|
||||||
|
};
|
||||||
|
|
||||||
|
const rrss = socialNetworksComposer(speaker, context);
|
||||||
|
|
||||||
|
return Object.assign({},
|
||||||
|
speaker,
|
||||||
|
rrss,
|
||||||
|
{ multimedias: multimedias },
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const extraMethods = {
|
||||||
|
afterFetchAll: (result, params, context) => {
|
||||||
|
|
||||||
|
if (!result.count) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rows = result.rows.map(row => row.toJSON());
|
||||||
|
rows = rows.map(speaker => speakerComposer(speaker, context));
|
||||||
|
|
||||||
|
return {
|
||||||
|
count: rows.length,
|
||||||
|
rows: rows
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
afterFetchOne: (result, params, context) => {
|
||||||
|
return speakerComposer(result.toJSON(), context);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = generateService(models.Speaker, extraMethods);
|
module.exports = generateService(models.Speaker, extraMethods);
|
||||||
Loading…
Reference in New Issue
Block a user