diff --git a/classquiz/kahoot_importer/import_quiz.py b/classquiz/kahoot_importer/import_quiz.py index 899d638..28eb5ec 100644 --- a/classquiz/kahoot_importer/import_quiz.py +++ b/classquiz/kahoot_importer/import_quiz.py @@ -96,10 +96,14 @@ async def import_quiz(quiz_id: str, user: User) -> Quiz | str: user_id=user.id, questions=json.dumps(quiz_questions), ) - meilisearch.index(settings.meilisearch_index).add_documents([{ - "id": str(quiz_data.id), - "title": quiz_data.title, - "description": quiz_data.description, - "user": (await User.objects.filter(id=quiz_data.user_id).first()).username, - }]) + meilisearch.index(settings.meilisearch_index).add_documents( + [ + { + "id": str(quiz_data.id), + "title": quiz_data.title, + "description": quiz_data.description, + "user": (await User.objects.filter(id=quiz_data.user_id).first()).username, + } + ] + ) return await quiz_data.save() diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index d3696f6..86a268b 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -30,12 +30,16 @@ async def create_quiz_lol(quiz_input: QuizInput, user: User = Depends(get_curren raise HTTPException(status_code=400, detail="image url is not valid") quiz = Quiz(**quiz_input.dict(), user_id=user.id, id=uuid.uuid4()) await redis.delete("global_quiz_count") - meilisearch.index(settings.meilisearch_index).add_documents([{ - "id": str(quiz.id), - "title": quiz.title, - "description": quiz.description, - "user": (await User.objects.filter(id=quiz.user_id).first()).username, - }]) + meilisearch.index(settings.meilisearch_index).add_documents( + [ + { + "id": str(quiz.id), + "title": quiz.title, + "description": quiz.description, + "user": (await User.objects.filter(id=quiz.user_id).first()).username, + } + ] + ) return await quiz.save() @@ -137,12 +141,16 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends( quiz.description = quiz_input.description quiz.updated_at = datetime.now() quiz.questions = quiz_input.dict()["questions"] - meilisearch.index(settings.meilisearch_index).update_documents([{ - "id": str(quiz.id), - "title": quiz.title, - "description": quiz.description, - "user": (await User.objects.filter(id=quiz.user_id).first()).username, - }]) + meilisearch.index(settings.meilisearch_index).update_documents( + [ + { + "id": str(quiz.id), + "title": quiz.title, + "description": quiz.description, + "user": (await User.objects.filter(id=quiz.user_id).first()).username, + } + ] + ) return await quiz.update() diff --git a/classquiz/routers/search.py b/classquiz/routers/search.py index 9836e26..db93a75 100644 --- a/classquiz/routers/search.py +++ b/classquiz/routers/search.py @@ -26,7 +26,7 @@ class Hit(pydantic.BaseModel): title: str description: str user: str - formatted: Optional['Hit'] = pydantic.Field(None, alias='_formatted') + formatted: Optional["Hit"] = pydantic.Field(None, alias="_formatted") class SearchResponse(pydantic.BaseModel): @@ -46,7 +46,7 @@ class SearchData(pydantic.BaseModel): filter: Optional[str] = None facetsDistribution: Optional[list[str]] = None attributesToRetrieve: Optional[list[str]] = ["*"] - attributesToCrop: Optional[list[str]]= None + attributesToCrop: Optional[list[str]] = None cropLength: Optional[int] = 200 attributesToHighlight: Optional[list[str]] = None matches: Optional[bool] = False @@ -56,31 +56,44 @@ class SearchData(pydantic.BaseModel): @router.post("/", response_model=SearchResponse) async def search(data: SearchData): index = meilisearch.get_index(settings.meilisearch_index) - query = index.search(data.q, { - "offset": data.offset, - "limit": data.limit, - "filter": data.filter, - "cropLength": data.cropLength, - "matches": data.matches, - "facetsDistribution": data.facetsDistribution, - "attributesToRetrieve": data.attributesToRetrieve, - "attributesToCrop": data.attributesToCrop, - "sort": data.sort, - "attributesToHighlight": data.attributesToHighlight - }) + query = index.search( + data.q, + { + "offset": data.offset, + "limit": data.limit, + "filter": data.filter, + "cropLength": data.cropLength, + "matches": data.matches, + "facetsDistribution": data.facetsDistribution, + "attributesToRetrieve": data.attributesToRetrieve, + "attributesToCrop": data.attributesToCrop, + "sort": data.sort, + "attributesToHighlight": data.attributesToHighlight, + }, + ) return SearchResponse(**query) @router.get("/", response_model=SearchResponse) -async def search_get(q: str, offset: int = 0, limit: int = 20, filter: str | None = None, - cropLength: int = 200, matches: bool = False, attributesToHighlight: Optional[str] = "*"): +async def search_get( + q: str, + offset: int = 0, + limit: int = 20, + filter: str | None = None, + cropLength: int = 200, + matches: bool = False, + attributesToHighlight: Optional[str] = "*", +): index = meilisearch.get_index(settings.meilisearch_index) - query = index.search(q, { - "offset": offset, - "limit": limit, - "filter": filter, - "cropLength": cropLength, - "matches": matches, - "attributesToHighlight": [attributesToHighlight] - }) + query = index.search( + q, + { + "offset": offset, + "limit": limit, + "filter": filter, + "cropLength": cropLength, + "matches": matches, + "attributesToHighlight": [attributesToHighlight], + }, + ) return SearchResponse(**query) diff --git a/import_to_meili.py b/import_to_meili.py index 5e38254..7fcf8e5 100644 --- a/import_to_meili.py +++ b/import_to_meili.py @@ -11,12 +11,14 @@ async def __main__(): meili_data = [] questions = await Quiz.objects.filter(public=True).all() for question in questions: - meili_data.append({ - "id": str(question.id), - "title": question.title, - "description": question.description, - "user": (await User.objects.filter(id=question.user_id).first()).username, - }) + meili_data.append( + { + "id": str(question.id), + "title": question.title, + "description": question.description, + "user": (await User.objects.filter(id=question.user_id).first()).username, + } + ) print(meili_data) client = meilisearch.Client(settings.meilisearch_url) client.index(settings.meilisearch_index).add_documents(meili_data)