|
@@ -189,6 +189,77 @@ async def delete_chat_by_id(request: Request, id: str, user=Depends(get_current_
|
|
return result
|
|
return result
|
|
|
|
|
|
|
|
|
|
|
|
+############################
|
|
|
|
+# ShareChatById
|
|
|
|
+############################
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@router.post("/{id}/share", response_model=Optional[ChatResponse])
|
|
|
|
+async def share_chat_by_id(id: str, user=Depends(get_current_user)):
|
|
|
|
+ chat = Chats.get_chat_by_id_and_user_id(id, user.id)
|
|
|
|
+ if chat:
|
|
|
|
+ if chat.share_id:
|
|
|
|
+ shared_chat = Chats.get_chat_by_id_and_user_id(chat.share_id, "shared")
|
|
|
|
+ return ChatResponse(
|
|
|
|
+ **{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)}
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ shared_chat = Chats.insert_shared_chat(chat.id)
|
|
|
|
+ if not shared_chat:
|
|
|
|
+ raise HTTPException(
|
|
|
|
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
|
|
+ detail=ERROR_MESSAGES.DEFAULT(),
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ return ChatResponse(
|
|
|
|
+ **{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)}
|
|
|
|
+ )
|
|
|
|
+ else:
|
|
|
|
+ raise HTTPException(
|
|
|
|
+ status_code=status.HTTP_401_UNAUTHORIZED,
|
|
|
|
+ detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+############################
|
|
|
|
+# DeletedSharedChatById
|
|
|
|
+############################
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@router.delete("/{id}/share", response_model=Optional[bool])
|
|
|
|
+async def delete_shared_chat_by_id(id: str, user=Depends(get_current_user)):
|
|
|
|
+ chat = Chats.get_chat_by_id_and_user_id(id, user.id)
|
|
|
|
+ if chat:
|
|
|
|
+ if not chat.share_id:
|
|
|
|
+ return False
|
|
|
|
+ result = Chats.delete_chat_by_id_and_user_id(chat.share_id, "shared")
|
|
|
|
+ update_result = Chats.update_chat_share_id_by_id(chat.id, None)
|
|
|
|
+
|
|
|
|
+ return result and update_result
|
|
|
|
+ else:
|
|
|
|
+ raise HTTPException(
|
|
|
|
+ status_code=status.HTTP_401_UNAUTHORIZED,
|
|
|
|
+ detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+############################
|
|
|
|
+# GetSharedChatById
|
|
|
|
+############################
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@router.get("/share/{id}", response_model=Optional[ChatResponse])
|
|
|
|
+async def get_shared_chat_by_id(id: str, user=Depends(get_current_user)):
|
|
|
|
+ chat = Chats.get_chat_by_id_and_user_id(id, "shared")
|
|
|
|
+
|
|
|
|
+ if chat:
|
|
|
|
+ return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
|
|
|
|
+ else:
|
|
|
|
+ raise HTTPException(
|
|
|
|
+ status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
############################
|
|
############################
|
|
# GetChatTagsById
|
|
# GetChatTagsById
|
|
############################
|
|
############################
|