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 = [] for query_lang in query_langs: chars = load_index(query_lang, 'geographies') response.append({query_lang: list(chars[query_field].keys())}) return Response(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))