a
This commit is contained in:
parent
c7f6b3d948
commit
6203caf9a0
@ -13,7 +13,7 @@ const defaultOptions = {
|
|||||||
MODULE_NAME: 'default',
|
MODULE_NAME: 'default',
|
||||||
params: {
|
params: {
|
||||||
find: { includeAll: false },
|
find: { includeAll: false },
|
||||||
findOne: { includeAll: true, paginate: { limit: 1, page: 1 } },
|
findOne: { includeAll: false, paginate: { limit: 1, page: 1 } },
|
||||||
count: {},
|
count: {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -44,7 +44,8 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
findOne: (config) => {
|
findOne: (config) => {
|
||||||
return async (req, res, next) => {
|
return async (req, res, next) => {
|
||||||
const params = extractParamsFromRequest(req, res, _options.params.findOne);
|
const params = extractParamsFromRequest(req, res, _options.params.findOne);
|
||||||
|
console.log('------------------------------------PARAMS');
|
||||||
|
console.log(params);
|
||||||
try {
|
try {
|
||||||
const result = await service.fetchOne(params, buildContext(req, config));
|
const result = await service.fetchOne(params, buildContext(req, config));
|
||||||
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
|
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
|
||||||
|
|||||||
@ -162,12 +162,9 @@ const generateService = (model, extraMethods = {}, options = defaultOptions) =>
|
|||||||
},
|
},
|
||||||
|
|
||||||
fetchOne: async (params, context) => {
|
fetchOne: async (params, context) => {
|
||||||
const findOptions = parseParamsToFindOptions(params);
|
|
||||||
|
|
||||||
const result = await model.scope(context.scopes).findOne({
|
const findOptions = parseParamsToFindOptions(params);
|
||||||
where: findOptions.where,
|
const result = await model.scope(context.scopes).findOne(findOptions);
|
||||||
include: findOptions.include
|
|
||||||
});
|
|
||||||
|
|
||||||
if (extraMethods.afterFetchOne) {
|
if (extraMethods.afterFetchOne) {
|
||||||
return extraMethods.afterFetchOne(result, params, context);
|
return extraMethods.afterFetchOne(result, params, context);
|
||||||
|
|||||||
@ -76,8 +76,8 @@ const extraControllers = {
|
|||||||
return handleResultResponse(result, result.count, params, res);
|
return handleResultResponse(result, result.count, params, res);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
findOne: async (req, res, next) => {
|
findOne2: async (req, res, next) => {
|
||||||
const params = extractParamsFromRequest(req, res, { includeAll: false });
|
const params = extractParamsFromRequest(req, res, { includeAll: false });
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -87,7 +87,7 @@ const extraControllers = {
|
|||||||
handleErrorResponse(MODULE_NAME, 'findOne', error, res)
|
handleErrorResponse(MODULE_NAME, 'findOne', error, res)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ routes.get('/events',
|
|||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
SortMiddleware.middleware({ default: "-init_date" }),
|
SortMiddleware.middleware({ default: "-init_date" }),
|
||||||
eventController.find({
|
eventController.find({
|
||||||
scopes: ['defaultScope', 'includeVenue'],
|
scopes: ['defaultScope', 'includeVenue', 'includeMultimedias'],
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ routes.get('/events/current',
|
|||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
SortMiddleware.middleware({ default: "-init_date" }),
|
SortMiddleware.middleware({ default: "-init_date" }),
|
||||||
eventController.find({
|
eventController.find({
|
||||||
scopes: ['defaultScope', 'current', 'includeVenue', 'includeSpeakers'],
|
scopes: ['defaultScope', 'current', 'includeVenue', 'includeMultimedias', 'includeSpeakers'],
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -71,15 +71,9 @@ routes.get('/events/:id',
|
|||||||
FieldMiddleware.middleware({
|
FieldMiddleware.middleware({
|
||||||
invalidFields: generalInvalidFields
|
invalidFields: generalInvalidFields
|
||||||
}),
|
}),
|
||||||
eventController.findOne
|
eventController.findOne({
|
||||||
|
scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers'],
|
||||||
|
}),
|
||||||
|
|
||||||
// eventController.find({
|
|
||||||
// scopes: ['defaultScope', 'next', 'includeVenue', 'includeSpeakers'],
|
|
||||||
// }),
|
|
||||||
|
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Comentarios
|
// Comentarios
|
||||||
|
|||||||
@ -7,7 +7,8 @@ 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 XXX = (multimedias) => multimedias.map(multimedia => ({
|
|
||||||
|
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
|
||||||
...multimedia,
|
...multimedia,
|
||||||
...multimedia.MultimediaFile,
|
...multimedia.MultimediaFile,
|
||||||
type: multimedia.type,
|
type: multimedia.type,
|
||||||
@ -18,6 +19,43 @@ const XXX = (multimedias) => multimedias.map(multimedia => ({
|
|||||||
userId: 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 extraMethods = {
|
const extraMethods = {
|
||||||
afterFetchAll: (result, params, context) => {
|
afterFetchAll: (result, params, context) => {
|
||||||
|
|
||||||
@ -26,20 +64,7 @@ const extraMethods = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let rows = result.rows.map(row => row.toJSON());
|
let rows = result.rows.map(row => row.toJSON());
|
||||||
|
rows = rows.map(event => eventComposer(event, context));
|
||||||
if (context.scopes.includes('includeSpeakers')) {
|
|
||||||
rows = rows.map(event => Object.assign({},
|
|
||||||
event,
|
|
||||||
{ multimedias: XXX(event.multimedias) },
|
|
||||||
{ details: undefined },
|
|
||||||
{ speakers: event.details.map((detail) => ({
|
|
||||||
...detail.speaker,
|
|
||||||
order: detail.order,
|
|
||||||
//...XXX(detail.speaker.multimedias)
|
|
||||||
multimedias: XXX(detail.speaker.multimedias),
|
|
||||||
}))}
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
count: rows.length,
|
count: rows.length,
|
||||||
@ -48,80 +73,11 @@ const extraMethods = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
fetch2: async (params, context) => {
|
afterFetchOne: (result, params, context) => {
|
||||||
//const lapse = context.lapse;
|
return eventComposer(result.toJSON(), context);
|
||||||
const findOptions = parseParamsToFindOptions(params);
|
|
||||||
|
|
||||||
/*switch (lapse) {
|
|
||||||
case 'next':
|
|
||||||
findOptions.where = Object.assign({},
|
|
||||||
findOptions.where, {
|
|
||||||
date: {
|
|
||||||
[Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').utc()
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'current':
|
|
||||||
findOptions.where = Object.assign({},
|
|
||||||
findOptions.where, {
|
|
||||||
date: {
|
|
||||||
[Sequelize.Op.gte]: moment().startOf('day').utc(),
|
|
||||||
[Sequelize.Op.lt]: moment().add(1, 'days').startOf('day').utc(),
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'past':
|
|
||||||
findOptions.where = Object.assign ({},
|
|
||||||
findOptions.where, {
|
|
||||||
date: {
|
|
||||||
[Sequelize.Op.lt]: moment().startOf('day').utc()
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Incluir
|
|
||||||
/* findOptions.include.push({
|
|
||||||
model: models.EventSchedule,
|
|
||||||
as: 'schedule',
|
|
||||||
include: {
|
|
||||||
model: models.Speaker,
|
|
||||||
as: 'speaker',
|
|
||||||
attributes: ['id', 'name', 'description']
|
|
||||||
}
|
|
||||||
});
|
|
||||||
findOptions.include.push({
|
|
||||||
model: models.EventType,
|
|
||||||
as: 'type',
|
|
||||||
attributes: ['name', 'title'],
|
|
||||||
});
|
|
||||||
findOptions.include.push({
|
|
||||||
model: models.Venue,
|
|
||||||
as: 'venue'
|
|
||||||
});
|
|
||||||
|
|
||||||
// findOptions.include.push({
|
|
||||||
// model: models.Multimedia, //where: { alias: type }, attributes: [],
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
findOptions.where = Object.assign({},
|
|
||||||
findOptions.where, {
|
|
||||||
state: 'publish'
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(context);
|
|
||||||
try {
|
|
||||||
return await models.Event.scope(context.scopes).findAll(findOptions);
|
|
||||||
} catch(error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
fetchOne: async (params, context) => {
|
fetchOne: async (params, context) => {
|
||||||
const findOptions = parseParamsToFindOptions(params);
|
const findOptions = parseParamsToFindOptions(params);
|
||||||
|
|
||||||
@ -161,6 +117,7 @@ const extraMethods = {
|
|||||||
include: findOptions.include
|
include: findOptions.include
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = generateService(models.Event, extraMethods);
|
module.exports = generateService(models.Event, extraMethods);
|
||||||
Loading…
Reference in New Issue
Block a user