|
@@ -50,7 +50,15 @@ async def get_folders(user=Depends(get_verified_user)):
|
|
|
folders = Folders.get_folders_by_user_id(user.id)
|
|
|
|
|
|
# Verify folder data integrity
|
|
|
+ folder_list = []
|
|
|
for folder in folders:
|
|
|
+ if folder.parent_id and not Folders.get_folder_by_id_and_user_id(
|
|
|
+ folder.parent_id, user.id
|
|
|
+ ):
|
|
|
+ folder = Folders.update_folder_parent_id_by_id_and_user_id(
|
|
|
+ folder.id, user.id, None
|
|
|
+ )
|
|
|
+
|
|
|
if folder.data:
|
|
|
if "files" in folder.data:
|
|
|
valid_files = []
|
|
@@ -74,12 +82,9 @@ async def get_folders(user=Depends(get_verified_user)):
|
|
|
folder.id, user.id, FolderUpdateForm(data=folder.data)
|
|
|
)
|
|
|
|
|
|
- return [
|
|
|
- {
|
|
|
- **folder.model_dump(),
|
|
|
- }
|
|
|
- for folder in folders
|
|
|
- ]
|
|
|
+ folder_list.append(FolderNameIdResponse(**folder.model_dump()))
|
|
|
+
|
|
|
+ return folder_list
|
|
|
|
|
|
|
|
|
############################
|
|
@@ -265,21 +270,31 @@ async def delete_folder_by_id(
|
|
|
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
|
|
)
|
|
|
|
|
|
- folder = Folders.get_folder_by_id_and_user_id(id, user.id)
|
|
|
- if folder:
|
|
|
- try:
|
|
|
- folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
|
|
|
- for folder_id in folder_ids:
|
|
|
- Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
|
|
|
+ folders = []
|
|
|
+ folders.append(Folders.get_folder_by_id_and_user_id(id, user.id))
|
|
|
+ while folders:
|
|
|
+ folder = folders.pop()
|
|
|
+ if folder:
|
|
|
+ try:
|
|
|
+ folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
|
|
|
+ for folder_id in folder_ids:
|
|
|
+ Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
|
|
|
+
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ log.exception(e)
|
|
|
+ log.error(f"Error deleting folder: {id}")
|
|
|
+ raise HTTPException(
|
|
|
+ status_code=status.HTTP_400_BAD_REQUEST,
|
|
|
+ detail=ERROR_MESSAGES.DEFAULT("Error deleting folder"),
|
|
|
+ )
|
|
|
+ finally:
|
|
|
+ # Get all subfolders
|
|
|
+ subfolders = Folders.get_folders_by_parent_id_and_user_id(
|
|
|
+ folder.id, user.id
|
|
|
+ )
|
|
|
+ folders.extend(subfolders)
|
|
|
|
|
|
- return True
|
|
|
- except Exception as e:
|
|
|
- log.exception(e)
|
|
|
- log.error(f"Error deleting folder: {id}")
|
|
|
- raise HTTPException(
|
|
|
- status_code=status.HTTP_400_BAD_REQUEST,
|
|
|
- detail=ERROR_MESSAGES.DEFAULT("Error deleting folder"),
|
|
|
- )
|
|
|
else:
|
|
|
raise HTTPException(
|
|
|
status_code=status.HTTP_404_NOT_FOUND,
|