Only create new chat on get if a specific chat id, slug isn't requested

This commit is contained in:
Debanjum Singh Solanky
2024-03-15 11:58:39 +05:30
parent 8cdfaf41ec
commit cac26dafe3
2 changed files with 9 additions and 11 deletions

View File

@@ -439,16 +439,13 @@ class ConversationAdapters:
user: KhojUser, client_application: ClientApplication = None, conversation_id: int = None, slug: str = None user: KhojUser, client_application: ClientApplication = None, conversation_id: int = None, slug: str = None
): ):
if conversation_id: 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: 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: else:
conversation = Conversation.objects.filter(user=user, client=client_application).order_by("-updated_at") return await (
Conversation.objects.filter(user=user, client=client_application).order_by("-updated_at").afirst()
if await conversation.aexists(): ) or Conversation.objects.acreate(user=user, client=client_application, slug=slug)
return await conversation.afirst()
return await Conversation.objects.acreate(user=user, client=client_application, slug=slug)
@staticmethod @staticmethod
async def adelete_conversation_by_user( async def adelete_conversation_by_user(

View File

@@ -250,9 +250,10 @@ async def chat(
formatted_help = help_message.format(model=model_type, version=state.khoj_version, device=get_device()) 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) return StreamingResponse(iter([formatted_help]), media_type="text/event-stream", status_code=200)
meta_log = ( conversation = await ConversationAdapters.aget_conversation_by_user(
await ConversationAdapters.aget_conversation_by_user(user, request.user.client_app, conversation_id, slug) user, request.user.client_app, conversation_id, slug
).conversation_log )
meta_log = conversation.conversation_log if conversation else {}
if conversation_commands == [ConversationCommand.Default]: if conversation_commands == [ConversationCommand.Default]:
conversation_commands = await aget_relevant_information_sources(q, meta_log) conversation_commands = await aget_relevant_information_sources(q, meta_log)