From cac26dafe3a51223b47000b7c558f5081d5f316e Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Fri, 15 Mar 2024 11:58:39 +0530 Subject: [PATCH] Only create new chat on get if a specific chat id, slug isn't requested --- src/khoj/database/adapters/__init__.py | 13 +++++-------- src/khoj/routers/api_chat.py | 7 ++++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/khoj/database/adapters/__init__.py b/src/khoj/database/adapters/__init__.py index 9d74df05..6de359ae 100644 --- a/src/khoj/database/adapters/__init__.py +++ b/src/khoj/database/adapters/__init__.py @@ -439,16 +439,13 @@ class ConversationAdapters: user: KhojUser, client_application: ClientApplication = None, conversation_id: int = None, slug: str = None ): if conversation_id: - conversation = Conversation.objects.filter(user=user, client=client_application, id=conversation_id) + return await Conversation.objects.filter(user=user, client=client_application, id=conversation_id).afirst() elif slug: - conversation = Conversation.objects.filter(user=user, client=client_application, slug=slug) + return await Conversation.objects.filter(user=user, client=client_application, slug=slug).afirst() else: - conversation = Conversation.objects.filter(user=user, client=client_application).order_by("-updated_at") - - if await conversation.aexists(): - return await conversation.afirst() - - return await Conversation.objects.acreate(user=user, client=client_application, slug=slug) + return await ( + Conversation.objects.filter(user=user, client=client_application).order_by("-updated_at").afirst() + ) or Conversation.objects.acreate(user=user, client=client_application, slug=slug) @staticmethod async def adelete_conversation_by_user( diff --git a/src/khoj/routers/api_chat.py b/src/khoj/routers/api_chat.py index 7a99869c..79f13351 100644 --- a/src/khoj/routers/api_chat.py +++ b/src/khoj/routers/api_chat.py @@ -250,9 +250,10 @@ async def chat( formatted_help = help_message.format(model=model_type, version=state.khoj_version, device=get_device()) return StreamingResponse(iter([formatted_help]), media_type="text/event-stream", status_code=200) - meta_log = ( - await ConversationAdapters.aget_conversation_by_user(user, request.user.client_app, conversation_id, slug) - ).conversation_log + conversation = await ConversationAdapters.aget_conversation_by_user( + user, request.user.client_app, conversation_id, slug + ) + meta_log = conversation.conversation_log if conversation else {} if conversation_commands == [ConversationCommand.Default]: conversation_commands = await aget_relevant_information_sources(q, meta_log)