🐛 Fixed (probably) #44
This commit is contained in:
@@ -3,7 +3,9 @@ from fastapi import APIRouter
|
|||||||
|
|
||||||
from classquiz.config import settings, meilisearch
|
from classquiz.config import settings, meilisearch
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
from typing import Optional, List
|
from typing import Optional, List, Any
|
||||||
|
from meilisearch.errors import MeiliSearchApiError
|
||||||
|
from classquiz.helpers import meilisearch_init
|
||||||
|
|
||||||
settings = settings()
|
settings = settings()
|
||||||
|
|
||||||
@@ -42,10 +44,19 @@ class SearchData(pydantic.BaseModel):
|
|||||||
sort: Optional[list[str]] = None
|
sort: Optional[list[str]] = None
|
||||||
|
|
||||||
|
|
||||||
|
async def _perform_search(query: str, params: dict) -> dict[str, Any]:
|
||||||
|
try:
|
||||||
|
index = meilisearch.get_index(settings.meilisearch_index)
|
||||||
|
return index.search(query, params)
|
||||||
|
except MeiliSearchApiError:
|
||||||
|
await meilisearch_init()
|
||||||
|
index = meilisearch.get_index(settings.meilisearch_index)
|
||||||
|
return index.search(query, params)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/", response_model=SearchResponse)
|
@router.post("/", response_model=SearchResponse)
|
||||||
async def search(data: SearchData):
|
async def search(data: SearchData):
|
||||||
index = meilisearch.get_index(settings.meilisearch_index)
|
query = await _perform_search(
|
||||||
query = index.search(
|
|
||||||
data.q,
|
data.q,
|
||||||
{
|
{
|
||||||
"offset": data.offset,
|
"offset": data.offset,
|
||||||
@@ -73,8 +84,7 @@ async def search_get(
|
|||||||
matches: bool = False,
|
matches: bool = False,
|
||||||
attributesToHighlight: Optional[str] = "*",
|
attributesToHighlight: Optional[str] = "*",
|
||||||
):
|
):
|
||||||
index = meilisearch.get_index(settings.meilisearch_index)
|
query = await _perform_search(
|
||||||
query = index.search(
|
|
||||||
q,
|
q,
|
||||||
{
|
{
|
||||||
"offset": offset,
|
"offset": offset,
|
||||||
|
|||||||
Reference in New Issue
Block a user