Source code for rootski.main.endpoints.search

import pandas as pd
from fastapi import APIRouter, Request
from loguru import logger

from rootski.schemas.core import Services
from rootski.services.database import DBService


router = APIRouter()


[docs]@router.get("/search/{search_term}") async def get_matching_search_terms(search_term: str, request: Request): app_services: Services = request.app.state.services db_service: DBService = app_services.db engine = db_service.sync_engine words = pd.read_sql( f""" SELECT word, id AS word_id, pos, COALESCE(frequency, -1) AS frequency FROM words WHERE word LIKE '{search_term}%%' LIMIT 100 """, con=engine, ) words.frequency = words.frequency.astype(int) to_return = {"words": words.to_dict(orient="records")} logger.debug(str(to_return)) return to_return