From 5250096962a3f42624372807fa72a4f6367f9baa Mon Sep 17 00:00:00 2001 From: a-romero Date: Tue, 16 Jul 2024 13:56:07 +0100 Subject: [PATCH 1/2] Updated to support databases that natively return JSONB objects as strings --- backend/chainlit/data/sql_alchemy.py | 12 +++++++++++- backend/chainlit/socket.py | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/chainlit/data/sql_alchemy.py b/backend/chainlit/data/sql_alchemy.py index 024eed6141..f98073bc08 100644 --- a/backend/chainlit/data/sql_alchemy.py +++ b/backend/chainlit/data/sql_alchemy.py @@ -1,9 +1,11 @@ +from importlib import metadata import json import ssl import uuid from dataclasses import asdict from datetime import datetime from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from venv import create import aiofiles import aiohttp @@ -115,7 +117,15 @@ async def get_user(self, identifier: str) -> Optional[PersistedUser]: result = await self.execute_sql(query=query, parameters=parameters) if result and isinstance(result, list): user_data = result[0] - return PersistedUser(**user_data) + metadata = user_data.get("metadata") or {} + if metadata is not Dict: + metadata = json.loads(metadata) + return PersistedUser( + id=user_data.get("id"), + identifier=user_data.get("identifier"), + createdAt=user_data.get("createdAt"), + metadata=metadata, + ) return None async def create_user(self, user: User) -> Optional[PersistedUser]: diff --git a/backend/chainlit/socket.py b/backend/chainlit/socket.py index f2979e9e21..d1b35dc0b0 100644 --- a/backend/chainlit/socket.py +++ b/backend/chainlit/socket.py @@ -55,6 +55,8 @@ async def resume_thread(session: WebsocketSession): if user_is_author: metadata = thread.get("metadata") or {} + if metadata is not Dict: + metadata = json.loads(metadata) user_sessions[session.id] = metadata.copy() if chat_profile := metadata.get("chat_profile"): session.chat_profile = chat_profile From c36ca375b49faf05239e1e4ef42f85e81aeb0ea8 Mon Sep 17 00:00:00 2001 From: a-romero Date: Mon, 22 Jul 2024 10:57:19 +0100 Subject: [PATCH 2/2] Removed redundant import --- backend/chainlit/data/sql_alchemy.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/chainlit/data/sql_alchemy.py b/backend/chainlit/data/sql_alchemy.py index f98073bc08..8ddc550381 100644 --- a/backend/chainlit/data/sql_alchemy.py +++ b/backend/chainlit/data/sql_alchemy.py @@ -5,7 +5,6 @@ from dataclasses import asdict from datetime import datetime from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union -from venv import create import aiofiles import aiohttp