This commit is contained in:
Timothy Jaeryang Baek 2025-08-10 01:44:33 +04:00
parent bd2819a96a
commit 6497b46a78
2 changed files with 12 additions and 18 deletions

View file

@ -251,18 +251,15 @@ class FolderTable:
log.error(f"update_folder: {e}") log.error(f"update_folder: {e}")
return return
def delete_folder_by_id_and_user_id( def delete_folder_by_id_and_user_id(self, id: str, user_id: str) -> list[str]:
self, id: str, user_id: str, delete_chats=True
) -> bool:
try: try:
folder_ids = []
with get_db() as db: with get_db() as db:
folder = db.query(Folder).filter_by(id=id, user_id=user_id).first() folder = db.query(Folder).filter_by(id=id, user_id=user_id).first()
if not folder: if not folder:
return False return folder_ids
if delete_chats: folder_ids.append(folder.id)
# Delete all chats in the folder
Chats.delete_chats_by_user_id_and_folder_id(user_id, folder.id)
# Delete all children folders # Delete all children folders
def delete_children(folder): def delete_children(folder):
@ -270,12 +267,9 @@ class FolderTable:
folder.id, user_id folder.id, user_id
) )
for folder_child in folder_children: for folder_child in folder_children:
if delete_chats:
Chats.delete_chats_by_user_id_and_folder_id(
user_id, folder_child.id
)
delete_children(folder_child) delete_children(folder_child)
folder_ids.append(folder_child.id)
folder = db.query(Folder).filter_by(id=folder_child.id).first() folder = db.query(Folder).filter_by(id=folder_child.id).first()
db.delete(folder) db.delete(folder)
@ -284,10 +278,10 @@ class FolderTable:
delete_children(folder) delete_children(folder)
db.delete(folder) db.delete(folder)
db.commit() db.commit()
return True return folder_ids
except Exception as e: except Exception as e:
log.error(f"delete_folder: {e}") log.error(f"delete_folder: {e}")
return False return []
Folders = FolderTable() Folders = FolderTable()

View file

@ -244,11 +244,11 @@ async def delete_folder_by_id(
folder = Folders.get_folder_by_id_and_user_id(id, user.id) folder = Folders.get_folder_by_id_and_user_id(id, user.id)
if folder: if folder:
try: try:
result = Folders.delete_folder_by_id_and_user_id(id, user.id) folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
if result: for folder_id in folder_ids:
return result Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
else:
raise Exception("Error deleting folder") return True
except Exception as e: except Exception as e:
log.exception(e) log.exception(e)
log.error(f"Error deleting folder: {id}") log.error(f"Error deleting folder: {id}")