From 3a5a95e9edb95826b8911765753bd05c995c3bc1 Mon Sep 17 00:00:00 2001 From: lesion Date: Wed, 1 Jun 2022 14:14:32 +0200 Subject: [PATCH] place/all api --- server/api/controller/place.js | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/server/api/controller/place.js b/server/api/controller/place.js index 855b73f3..9da6068f 100644 --- a/server/api/controller/place.js +++ b/server/api/controller/place.js @@ -3,7 +3,7 @@ const Place = require('../models/place') const Event = require('../models/event') const eventController = require('./event') const log = require('../../log') -const { Op, where, col, fn } = require('sequelize') +const { Op, where, col, fn, cast } = require('sequelize') module.exports = { async getEvents (req, res) { @@ -26,18 +26,34 @@ module.exports = { res.json(place) }, - async get (req, res) { - const search = req.query.search + async getAll (_req, res) { const places = await Place.findAll({ + order: [[cast(fn('COUNT', col('events.placeId')),'INTEGER'), 'DESC']], + include: [{ model: Event, where: { is_visible: true }, required: true, attributes: [] }], + group: ['place.id'], + raw: true + }) + return res.json(places) + }, + + async get (req, res) { + const search = req.query.search.toLocaleLowerCase() + const places = await Place.findAll({ + order: [[cast(fn('COUNT', col('events.placeId')),'INTEGER'), 'DESC']], where: { [Op.or]: [ - { name: where(fn('LOWER', col('name')), 'LIKE', '%' + search + '%') }, - { address: where(fn('LOWER', col('address')), 'LIKE', '%' + search + '%') }, + { name: where(fn('LOWER', col('name')), 'LIKE', '%' + search + '%' )}, + { address: where(fn('LOWER', col('address')), 'LIKE', '%' + search + '%')}, ] - } + }, + attributes: ['name', 'address', 'id'], + include: [{ model: Event, where: { is_visible: true }, required: true, attributes: [] }], + group: ['place.id'], + raw: true }) - return res.json(places) + // TOFIX: don't know why limit does not work + return res.json(places.slice(0, 10)) } } \ No newline at end of file