浏览代码

feat: chat cascade delete

Timothy J. Baek 1 年之前
父节点
当前提交
95505bc4c1
共有 1 个文件被更改,包括 15 次插入1 次删除
  1. 15 1
      backend/apps/web/models/chats.py

+ 15 - 1
backend/apps/web/models/chats.py

@@ -224,7 +224,7 @@ class ChatTable:
             query = Chat.delete().where((Chat.id == id) & (Chat.user_id == user_id))
             query.execute()  # Remove the rows, return number of rows removed.
 
-            return True
+            return True and self.delete_shared_chat_by_chat_id(id)
         except:
             return False
 
@@ -233,6 +233,20 @@ class ChatTable:
             query = Chat.delete().where(Chat.user_id == user_id)
             query.execute()  # Remove the rows, return number of rows removed.
 
+            return True and self.delete_shared_chats_by_user_id(user_id)
+        except:
+            return False
+
+    def delete_shared_chats_by_user_id(self, user_id: str) -> bool:
+        try:
+            shared_chat_ids = [
+                f"shared-{chat.id}"
+                for chat in Chat.select().where(Chat.user_id == user_id)
+            ]
+
+            query = Chat.delete().where(Chat.user_id << shared_chat_ids)
+            query.execute()  # Remove the rows, return number of rows removed.
+
             return True
         except:
             return False