This commit is contained in:
David Arranz 2019-07-09 18:56:22 +02:00
parent abdb2d67cd
commit 8cff7c6e01
6 changed files with 45 additions and 39 deletions

View File

@ -80,11 +80,14 @@ const parseParamsToFindOptions = (params) => {
result.query = params.query result.query = params.query
} }
// Where // Params
if (params.params) { if (params.params) {
result.where = params.params result.params = params.params
} }
// Where
result.where = [];
// Paginate // Paginate
if (params.paginate) { if (params.paginate) {
result.offset = params.paginate.limit * (params.paginate.page - 1); result.offset = params.paginate.limit * (params.paginate.page - 1);
@ -92,8 +95,8 @@ const parseParamsToFindOptions = (params) => {
} }
// Order // Order
result.order = [];
if (params.sort) { if (params.sort) {
result.order = [];
Object.keys(params.sort).forEach(key => { Object.keys(params.sort).forEach(key => {
let dir = params.sort[key] ? 'ASC' : 'DESC'; let dir = params.sort[key] ? 'ASC' : 'DESC';
result.order.push([key, dir]) result.order.push([key, dir])

View File

@ -14,7 +14,7 @@ const extraControllers = {
findNext: async (req, res, next) => { findNext: async (req, res, next) => {
const params = extractParamsFromRequest(req, res, {}); const params = extractParamsFromRequest(req, res, {});
try { try {
const result = await eventService.fetchNext(null, { user: req.user }); const result = await eventService.fetchNext(params, { user: req.user });
return handleResultResponse(result, result.count, params, res); return handleResultResponse(result, result.count, params, res);
} catch (error) { } catch (error) {
handleErrorResponse(MODULE_NAME, 'findNext', error, res); handleErrorResponse(MODULE_NAME, 'findNext', error, res);

View File

@ -3,9 +3,9 @@ const routes = require('express').Router();
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
const SchemaValidator = require('../../middlewares/schemaValidator'); const SchemaValidator = require('../../middlewares/schemaValidator');
/*const PaginateMiddleware = require('../../middlewares/paginate'); const PaginateMiddleware = require('../../middlewares/paginate');
const FieldMiddleware = require('../../middlewares/fields');*/ const FieldMiddleware = require('../../middlewares/fields');
//const SortMiddleware = require('../../middlewares/sort'); const SortMiddleware = require('../../middlewares/sort');
//const entityValidation = require('./entity.validations'); //const entityValidation = require('./entity.validations');
const eventController = require('./event.controller'); const eventController = require('./event.controller');
@ -15,35 +15,40 @@ routes.get('/events',
/*FieldMiddleware.middleware({ /*FieldMiddleware.middleware({
invalidFields: ['user', 'createdAt'] invalidFields: ['user', 'createdAt']
}),*/ }),*/
//PaginateMiddleware.middleware(), PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "date" }), SortMiddleware.middleware({ default: "-date" }),
eventController.find eventController.find
); );
routes.get('/events/next', routes.get('/events/next',
//isLoggedUser, //isLoggedUser,
FieldMiddleware.middleware({
invalidFields: ['user', 'createdAt']
}),
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "init_avalible_date" }),
eventController.findNext eventController.findNext
); );
routes.get('/events/pass', routes.get('/events/pass',
//isLoggedUser, //isLoggedUser,
eventController.findPass eventController.find
); );
routes.get('/events/current', routes.get('/events/current',
//isLoggedUser, //isLoggedUser,
eventController.findCurrent eventController.find
); );
routes.get('/events/:id', /*routes.get('/events/:id',
// isLoggedUser, isLoggedUser,
/*FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: ['updatedAt', 'createdAt'] invalidFields: ['updatedAt', 'createdAt']
}),*/ }),
eventController.finOne eventController.finOne
); );*/
//routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find);
//routes.get('/venues/:id', isLoggedUser, venueController.findOne); //routes.get('/venues/:id', isLoggedUser, venueController.findOne);

View File

@ -4,45 +4,41 @@
const _ = require('lodash'); const _ = require('lodash');
const moment = require('moment'); const moment = require('moment');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize');
const models = require('../../core/models'); const models = require('../../core/models');
const extraMethods = { const extraMethods = {
fetchNext: async (params, context) => { fetchNext: async (params, context) => {
var where = []; const findOptions = parseParamsToFindOptions(params);
var order = [];
var include = [];
where.push({ findOptions.where.push({
date: { date: {
$gte: moment().add(1, 'days').startOf('day').utc() [Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').utc()
} }
}); });
order.push(['date', 'ASC']);
// Incluir ponentes
include.push({ // Incluir
model: models.Speaker, findOptions.include.push({
//as: 'speakers' model: models.EventSchedule,
});
findOptions.include.push({
model: models.EventType,
});
findOptions.include.push({
model: models.Venue,
}); });
// Incluir tipo de evento
include.push({
model: models.EventType,
//as: 'type'
})
// Solo eventos publicados // Solo eventos publicados
where.push({ findOptions.where.push({
state: 'publish' state: 'publish'
}); });
try { try {
const result = await models.Event.findAll({ return await models.Event.findAll(findOptions);
where: where,
order: order,
include: include,
});
return result.toJSON();
} catch(error) { } catch(error) {
throw error; throw error;
} }

View File

@ -10,6 +10,8 @@ const FieldMiddleware = require('../../middlewares/fields');*/
const VenueValidation = require('./venue.validations'); const VenueValidation = require('./venue.validations');
const venueController = require('./venue.controller'); const venueController = require('./venue.controller');
//routes.get('/venues', true, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues', true, SortMiddleware.middleware({ default: "name" }), venueController.find);
//routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find);
//routes.get('/venues/:id', isLoggedUser, venueController.findOne); //routes.get('/venues/:id', isLoggedUser, venueController.findOne);

View File

@ -49,7 +49,7 @@ server.on('error', err => {
}); });
try { try {
models.sequelize.sync({ force: true }).then(() => { models.sequelize.sync({ force: false }).then(() => {
// Launch server. // Launch server.
server.listen(currentState.port, (err) => { server.listen(currentState.port, (err) => {
if (err) { if (err) {