4.2.0
This commit is contained in:
25
src/routes/geographies.py
Normal file
25
src/routes/geographies.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from src.errors import Response
|
||||
from src.types.geographies import Geography
|
||||
from src.utils import load_index, parse_query_langs, parse_result_lang, load_category, get_file_name
|
||||
|
||||
geographies = APIRouter(prefix='/geographies', tags=['Geographies'])
|
||||
|
||||
|
||||
@geographies.get('/')
|
||||
async def get_geographies(query_field: str = 'names', query_languages: str = 'eng') -> Response:
|
||||
query_langs = parse_query_langs(query_languages)
|
||||
response: list[dict[str, list[str]]] = []
|
||||
for query_lang in query_langs:
|
||||
chars = load_index(query_lang, 'geographies')
|
||||
response.append({query_lang: list(chars[query_field].keys())})
|
||||
return Response[list[dict[str, list[str]]]](error=False, response=response)
|
||||
|
||||
|
||||
@geographies.get('/{query}', response_model_exclude_none=True)
|
||||
async def get_geography(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[Geography]:
|
||||
query_langs = parse_query_langs(query_languages)
|
||||
result_lang = parse_result_lang(result_language)
|
||||
filename = get_file_name(query, 'geographies', query_langs)
|
||||
return Response[Geography](response=load_category(result_lang, 'geographies', filename))
|
Reference in New Issue
Block a user