gidb-server/src/routes/crafts.py

26 lines
1.1 KiB
Python

from fastapi import APIRouter
from src.errors import Response
from src.types.crafts import Craft
from src.utils import load_index, parse_query_langs, parse_result_lang, load_category, get_file_name
crafts = APIRouter(prefix='/crafts', tags=['Crafts'])
@crafts.get('/')
async def get_crafts(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, 'crafts')
response.append({query_lang: list(chars[query_field].keys())})
return Response[list[dict[str, list[str]]]](error=False, response=response)
@crafts.get('/{query}')
async def get_craft(query: str, query_languages: str = 'eng', result_language: str = 'ru') -> Response[Craft]:
query_langs = parse_query_langs(query_languages)
result_lang = parse_result_lang(result_language)
filename = get_file_name(query, 'crafts', query_langs)
return Response[Craft](response=load_category(result_lang, 'crafts', filename))