a
This commit is contained in:
parent
8225dbf36c
commit
3db849301d
@ -3,6 +3,15 @@ const cdnHelper = require('./cdn.helper');
|
|||||||
|
|
||||||
const valuesComposer = (values) => (values) ? values.map(value => ({id: value.id, name: value.name,})): values;
|
const valuesComposer = (values) => (values) ? values.map(value => ({id: value.id, name: value.name,})): values;
|
||||||
|
|
||||||
|
const citiesComposer = (city) => {
|
||||||
|
if (city) {
|
||||||
|
return {
|
||||||
|
...city,
|
||||||
|
image: cdnHelper.getCDNCityMediaUrl(city.city),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else return city;
|
||||||
|
}
|
||||||
|
|
||||||
const commentsComposer = (comments) => {
|
const commentsComposer = (comments) => {
|
||||||
if (comments) {
|
if (comments) {
|
||||||
@ -153,5 +162,6 @@ module.exports = {
|
|||||||
entityComposer,
|
entityComposer,
|
||||||
speakerComposer,
|
speakerComposer,
|
||||||
eventComposer,
|
eventComposer,
|
||||||
commentComposer
|
commentComposer,
|
||||||
|
citiesComposer
|
||||||
}
|
}
|
||||||
@ -60,15 +60,9 @@ module.exports = function (sequelize, DataTypes) {
|
|||||||
timestamps: true,
|
timestamps: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
Venue.addScope('includeCountEvents', () => {
|
Venue.addScope('includeOnlyCities', () => {
|
||||||
return {
|
return {
|
||||||
include: [
|
attributes: [[sequelize.fn('DISTINCT', sequelize.col('city')), 'city']]
|
||||||
{ model: sequelize.models.Event,
|
|
||||||
as: 'events',
|
|
||||||
attributes:[[sequelize.fn('COUNT', sequelize.col('id')), 'num_editions']],
|
|
||||||
required: false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -3,22 +3,33 @@ 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 VenueValidation = require('./venue.validations');
|
const VenueValidation = require('./venue.validations');
|
||||||
const venueController = require('./venue.controller');
|
const venueController = require('./venue.controller');
|
||||||
|
|
||||||
routes.get('/venues',
|
routes.get('/venues',
|
||||||
//SortMiddleware.middleware({ default: "name" }),
|
isLoggedUser,
|
||||||
|
//SortMiddleware.middleware({ default: "name" }),
|
||||||
venueController.find()
|
venueController.find()
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.get('/venues/:id',
|
routes.get('/venues/cities',
|
||||||
//isLoggedUser,
|
isLoggedUser,
|
||||||
venueController.findOne());
|
SortMiddleware.middleware({ default: "city" }),
|
||||||
|
venueController.find({
|
||||||
|
scopes: ['includeOnlyCities']
|
||||||
|
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
//routes.get('/venues/:id',
|
||||||
|
//isLoggedUser,
|
||||||
|
//venueController.findOne();
|
||||||
|
|
||||||
|
/*
|
||||||
routes.get('/venues/:id/events',
|
routes.get('/venues/:id/events',
|
||||||
//isLoggedUser,
|
//isLoggedUser,
|
||||||
//SortMiddleware.middleware({ default: "name" }),
|
//SortMiddleware.middleware({ default: "name" }),
|
||||||
@ -28,7 +39,7 @@ routes.get('/venues/:id/events',
|
|||||||
},
|
},
|
||||||
venueController.find());
|
venueController.find());
|
||||||
|
|
||||||
|
*/
|
||||||
routes.post('/venues/', SchemaValidator(VenueValidation.VenueInputType, true), venueController.create);
|
routes.post('/venues/', SchemaValidator(VenueValidation.VenueInputType, true), venueController.create);
|
||||||
//routes.put('/venues/:id', isAdministratorUser, venueController.update);
|
//routes.put('/venues/:id', isAdministratorUser, venueController.update);
|
||||||
//routes.delete('/venues/:id', isAdministratorUser, venueController.delete);
|
//routes.delete('/venues/:id', isAdministratorUser, venueController.delete);
|
||||||
|
|||||||
@ -4,7 +4,25 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
||||||
const models = require('../../core/models');
|
const models = require('../../core/models');
|
||||||
|
const { citiesComposer } = require('../../helpers/composes.helper');
|
||||||
|
|
||||||
const extraMethods = {};
|
const extraMethods = {
|
||||||
|
|
||||||
|
afterFetchAll: (result, params, context) => {
|
||||||
|
|
||||||
|
if (!result.count) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rows = result.rows.map(row => row.toJSON());
|
||||||
|
rows = rows.map(city => citiesComposer(city, context));
|
||||||
|
|
||||||
|
return {
|
||||||
|
count: rows.length,
|
||||||
|
rows: rows
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = generateService(models.Venue, extraMethods);
|
module.exports = generateService(models.Venue, extraMethods);
|
||||||
Loading…
Reference in New Issue
Block a user