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 citiesComposer = (city) => {
|
||||
if (city) {
|
||||
return {
|
||||
...city,
|
||||
image: cdnHelper.getCDNCityMediaUrl(city.city),
|
||||
};
|
||||
}
|
||||
else return city;
|
||||
}
|
||||
|
||||
const commentsComposer = (comments) => {
|
||||
if (comments) {
|
||||
@ -153,5 +162,6 @@ module.exports = {
|
||||
entityComposer,
|
||||
speakerComposer,
|
||||
eventComposer,
|
||||
commentComposer
|
||||
commentComposer,
|
||||
citiesComposer
|
||||
}
|
||||
@ -60,15 +60,9 @@ module.exports = function (sequelize, DataTypes) {
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
Venue.addScope('includeCountEvents', () => {
|
||||
Venue.addScope('includeOnlyCities', () => {
|
||||
return {
|
||||
include: [
|
||||
{ model: sequelize.models.Event,
|
||||
as: 'events',
|
||||
attributes:[[sequelize.fn('COUNT', sequelize.col('id')), 'num_editions']],
|
||||
required: false
|
||||
}
|
||||
]
|
||||
attributes: [[sequelize.fn('DISTINCT', sequelize.col('city')), 'city']]
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -3,22 +3,33 @@ const routes = require('express').Router();
|
||||
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
|
||||
const SchemaValidator = require('../../middlewares/schemaValidator');
|
||||
|
||||
/*const PaginateMiddleware = require('../../middlewares/paginate');
|
||||
const FieldMiddleware = require('../../middlewares/fields');*/
|
||||
//const SortMiddleware = require('../../middlewares/sort');
|
||||
//const PaginateMiddleware = require('../../middlewares/paginate');
|
||||
//const FieldMiddleware = require('../../middlewares/fields');
|
||||
const SortMiddleware = require('../../middlewares/sort');
|
||||
|
||||
const VenueValidation = require('./venue.validations');
|
||||
const venueController = require('./venue.controller');
|
||||
|
||||
routes.get('/venues',
|
||||
//SortMiddleware.middleware({ default: "name" }),
|
||||
isLoggedUser,
|
||||
//SortMiddleware.middleware({ default: "name" }),
|
||||
venueController.find()
|
||||
);
|
||||
|
||||
routes.get('/venues/:id',
|
||||
//isLoggedUser,
|
||||
venueController.findOne());
|
||||
routes.get('/venues/cities',
|
||||
isLoggedUser,
|
||||
SortMiddleware.middleware({ default: "city" }),
|
||||
venueController.find({
|
||||
scopes: ['includeOnlyCities']
|
||||
|
||||
})
|
||||
);
|
||||
|
||||
//routes.get('/venues/:id',
|
||||
//isLoggedUser,
|
||||
//venueController.findOne();
|
||||
|
||||
/*
|
||||
routes.get('/venues/:id/events',
|
||||
//isLoggedUser,
|
||||
//SortMiddleware.middleware({ default: "name" }),
|
||||
@ -28,7 +39,7 @@ routes.get('/venues/:id/events',
|
||||
},
|
||||
venueController.find());
|
||||
|
||||
|
||||
*/
|
||||
routes.post('/venues/', SchemaValidator(VenueValidation.VenueInputType, true), venueController.create);
|
||||
//routes.put('/venues/:id', isAdministratorUser, venueController.update);
|
||||
//routes.delete('/venues/:id', isAdministratorUser, venueController.delete);
|
||||
|
||||
@ -4,7 +4,25 @@
|
||||
const _ = require('lodash');
|
||||
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
||||
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);
|
||||
Loading…
Reference in New Issue
Block a user