From a76864d0f941e9657710abaabb896cbe80eb4e2a Mon Sep 17 00:00:00 2001 From: Giacomo Sarrocco Date: Sat, 16 Dec 2023 19:25:12 +0100 Subject: [PATCH 1/2] Add hide_ids parameter to search stations api and Typesense search --- server/base/source.py | 6 ++++-- server/routes.py | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/server/base/source.py b/server/base/source.py index a3f5e51..b8f8208 100644 --- a/server/base/source.py +++ b/server/base/source.py @@ -59,8 +59,8 @@ def __init__(self, name, emoji, session, typesense): self.session = session self.typesense = typesense - def search_stops(self, name=None, lat=None, lon=None, page=1, limit=4, all_sources=False) -> tuple[ - list[Station], int]: + def search_stops(self, name=None, lat=None, lon=None, page=1, limit=4, all_sources=False, + hide_ids: list[str] = None) -> tuple[list[Station], int]: search_config = {'per_page': limit, 'query_by': 'name', 'page': page} limit_hits = None @@ -78,6 +78,8 @@ def search_stops(self, name=None, lat=None, lon=None, page=1, limit=4, all_sourc }) if not all_sources: search_config['filter_by'] = f'source:{self.name}' + if hide_ids: + search_config['hidden_hits'] = ','.join(hide_ids) results = self.typesense.collections['stations'].documents.search(search_config) diff --git a/server/routes.py b/server/routes.py index a9cf19e..8036733 100644 --- a/server/routes.py +++ b/server/routes.py @@ -33,8 +33,11 @@ async def home(request: Request) -> Response: async def search_stations(request: Request) -> Response: query = request.query_params.get('q', '') limit = int(request.query_params.get('limit', 4)) + hide_ids = request.query_params.get('hide_ids') + if hide_ids: + hide_ids = hide_ids.split(',') limit = max(1, min(limit, 10)) - stations, count = sources['aut'].search_stops(name=query, all_sources=True, limit=limit) + stations, count = sources['aut'].search_stops(name=query, all_sources=True, limit=limit, hide_ids=hide_ids) return JSONResponse([station.as_dict() for station in stations]) From 54ed98ad473530e620a3216bee54bcd071766477 Mon Sep 17 00:00:00 2001 From: Giacomo Sarrocco Date: Sat, 16 Dec 2023 19:28:27 +0100 Subject: [PATCH 2/2] Add only_source parameter to search stations api --- server/routes.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/routes.py b/server/routes.py index 8036733..97c17e5 100644 --- a/server/routes.py +++ b/server/routes.py @@ -36,8 +36,15 @@ async def search_stations(request: Request) -> Response: hide_ids = request.query_params.get('hide_ids') if hide_ids: hide_ids = hide_ids.split(',') + only_source = request.query_params.get('only_source') + if only_source: + source = sources[only_source] + all_sources = False + else: + source = sources['aut'] + all_sources = True limit = max(1, min(limit, 10)) - stations, count = sources['aut'].search_stops(name=query, all_sources=True, limit=limit, hide_ids=hide_ids) + stations, count = source.search_stops(name=query, all_sources=all_sources, limit=limit, hide_ids=hide_ids) return JSONResponse([station.as_dict() for station in stations])