From facf03d8361e1c9c55738889be8adb557bf7fcc6 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 29 Jul 2019 17:10:23 +0200 Subject: [PATCH] a --- modules/events/event.model.js | 12 ++++++++++++ modules/events/event.routes.js | 9 +++++++++ modules/events/event.service.js | 9 +++++++-- modules/venues/venue.model.js | 7 ------- modules/venues/venue.routes.js | 9 --------- modules/venues/venue.service.js | 16 ---------------- 6 files changed, 28 insertions(+), 34 deletions(-) diff --git a/modules/events/event.model.js b/modules/events/event.model.js index c8349d0..9882544 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -157,6 +157,9 @@ module.exports = function (sequelize, DataTypes) { type: DataTypes.UUID, foreignKey: true, }, + city: { + type: DataTypes.STRING, + }, url_streaming: { type: DataTypes.STRING, }, @@ -337,5 +340,14 @@ module.exports = function (sequelize, DataTypes) { }, }); + + Event.addScope('CitiesOfEvents', () => { + return { + attributes: [[sequelize.fn('DISTINCT', sequelize.col('city')), 'city']] + } + }); + + + return Event; }; \ No newline at end of file diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 3ecf6ac..c1500ba 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -44,6 +44,15 @@ routes.get('/events', }), ); +routes.get('/events/cities', + isLoggedUser, + SortMiddleware.middleware({ default: "city" }), + eventController.find({ + scopes: ['CitiesOfEvents'] + }) +); + + routes.get('/events/next', isLoggedUser, FieldMiddleware.middleware({ diff --git a/modules/events/event.service.js b/modules/events/event.service.js index 0c9130b..d09ab2c 100644 --- a/modules/events/event.service.js +++ b/modules/events/event.service.js @@ -6,7 +6,7 @@ const moment = require('moment'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const Sequelize = require('sequelize'); const models = require('../../core/models'); -const { eventComposer } = require('../../helpers/composes.helper'); +const { citiesComposer, eventComposer } = require('../../helpers/composes.helper'); const extraMethods = { @@ -17,12 +17,17 @@ const extraMethods = { } let rows = result.rows.map(row => row.toJSON()); - rows = rows.map(event => eventComposer(event, context)); + + if (context.scopes.includes('CitiesOfEvents')) + rows = rows.map(city => citiesComposer(city, context)) + else + rows = rows.map(event => eventComposer(event, context)); return { count: rows.length, rows: rows } + }, afterFetchOne: (result, params, context) => { diff --git a/modules/venues/venue.model.js b/modules/venues/venue.model.js index 32657c3..160eee4 100644 --- a/modules/venues/venue.model.js +++ b/modules/venues/venue.model.js @@ -60,13 +60,6 @@ module.exports = function (sequelize, DataTypes) { timestamps: true, }); - Venue.addScope('includeOnlyCities', () => { - return { - attributes: [[sequelize.fn('DISTINCT', sequelize.col('city')), 'city']] - } - }); - - Venue.associate = function (models) { Venue.Events = Venue.hasMany(models.Event, { foreignKey: 'venueId', as: 'events' }); }; diff --git a/modules/venues/venue.routes.js b/modules/venues/venue.routes.js index 4825c3d..b89d1cc 100644 --- a/modules/venues/venue.routes.js +++ b/modules/venues/venue.routes.js @@ -16,15 +16,6 @@ routes.get('/venues', venueController.find() ); -routes.get('/venues/cities', - isLoggedUser, - SortMiddleware.middleware({ default: "city" }), - venueController.find({ - scopes: ['includeOnlyCities'] - - }) -); - //routes.get('/venues/:id', //isLoggedUser, //venueController.findOne(); diff --git a/modules/venues/venue.service.js b/modules/venues/venue.service.js index b4a1b8c..a35dd02 100644 --- a/modules/venues/venue.service.js +++ b/modules/venues/venue.service.js @@ -4,25 +4,9 @@ const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); -const { citiesComposer } = require('../../helpers/composes.helper'); 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); \ No newline at end of file