Browse Source

feat: update chat

Timothy J. Baek 1 year ago
parent
commit
1303407f53

+ 18 - 0
backend/apps/web/models/chats.py

@@ -44,6 +44,10 @@ class ChatForm(BaseModel):
     chat: dict
     chat: dict
 
 
 
 
+class ChatTitleForm(BaseModel):
+    title: str
+
+
 class ChatResponse(BaseModel):
 class ChatResponse(BaseModel):
     id: str
     id: str
     user_id: str
     user_id: str
@@ -93,6 +97,20 @@ class ChatTable:
         except:
         except:
             return None
             return None
 
 
+    def update_chat_by_id(self, id: str, chat: dict) -> Optional[ChatModel]:
+        try:
+            query = Chat.update(
+                chat=json.dumps(chat),
+                title=chat["title"] if "title" in chat else "New Chat",
+                timestamp=int(time.time()),
+            ).where(Chat.id == id)
+            query.execute()
+
+            chat = Chat.get(Chat.id == id)
+            return ChatModel(**model_to_dict(chat))
+        except:
+            return None
+
     def get_chat_lists_by_user_id(
     def get_chat_lists_by_user_id(
         self, user_id: str, skip: int = 0, limit: int = 50
         self, user_id: str, skip: int = 0, limit: int = 50
     ) -> List[ChatModel]:
     ) -> List[ChatModel]:

+ 4 - 1
backend/apps/web/routers/chats.py

@@ -11,6 +11,7 @@ from apps.web.models.users import Users
 from apps.web.models.chats import (
 from apps.web.models.chats import (
     ChatModel,
     ChatModel,
     ChatResponse,
     ChatResponse,
+    ChatTitleForm,
     ChatForm,
     ChatForm,
     ChatTitleIdResponse,
     ChatTitleIdResponse,
     Chats,
     Chats,
@@ -95,7 +96,9 @@ async def update_chat_by_id(id: str, form_data: ChatForm, cred=Depends(bearer_sc
     if user:
     if user:
         chat = Chats.get_chat_by_id_and_user_id(id, user.id)
         chat = Chats.get_chat_by_id_and_user_id(id, user.id)
         if chat:
         if chat:
-            chat = Chats.update_chat_by_id(id, form_data.chat)
+            updated_chat = {**json.loads(chat.chat), **form_data.chat}
+
+            chat = Chats.update_chat_by_id(id, updated_chat)
             return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
             return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
         else:
         else:
             raise HTTPException(
             raise HTTPException(

+ 1 - 0
src/lib/components/chat/Messages.svelte

@@ -254,6 +254,7 @@
 	};
 	};
 
 
 	const rateMessage = async (messageIdx, rating) => {
 	const rateMessage = async (messageIdx, rating) => {
+		// TODO: Move this function to parent
 		messages = messages.map((message, idx) => {
 		messages = messages.map((message, idx) => {
 			if (messageIdx === idx) {
 			if (messageIdx === idx) {
 				message.rating = rating;
 				message.rating = rating;