feat: update chat

This commit is contained in:
Timothy J. Baek 2023-12-26 10:41:55 -08:00
parent 0810a2648f
commit 1303407f53
3 changed files with 23 additions and 1 deletions

View file

@ -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]:

View file

@ -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(

View file

@ -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;