Sarp Bilgiç commited on
Commit
ca07860
·
1 Parent(s): 4ee3267

delete session messages with cascade

Browse files
alembic/versions/9f03cceaa492_add_cascade_delete_to_chat_messages.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """add cascade delete to chat messages
2
+
3
+ Revision ID: 9f03cceaa492
4
+ Revises: 34aaf324bd00
5
+ Create Date: 2026-01-06 22:57:13.810344
6
+
7
+ """
8
+ from typing import Sequence, Union
9
+
10
+ from alembic import op
11
+ import sqlalchemy as sa
12
+ import sqlmodel
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision: str = '9f03cceaa492'
16
+ down_revision: Union[str, Sequence[str], None] = '34aaf324bd00'
17
+ branch_labels: Union[str, Sequence[str], None] = None
18
+ depends_on: Union[str, Sequence[str], None] = None
19
+
20
+
21
+ def upgrade() -> None:
22
+ # PostgreSQL'de constraint'i direkt değiştirmek için
23
+ op.execute("""
24
+ ALTER TABLE chat_messages
25
+ DROP CONSTRAINT IF EXISTS chat_messages_session_id_fkey;
26
+ """)
27
+
28
+ op.execute("""
29
+ ALTER TABLE chat_messages
30
+ ADD CONSTRAINT chat_messages_session_id_fkey
31
+ FOREIGN KEY (session_id)
32
+ REFERENCES chat_sessions(id)
33
+ ON DELETE CASCADE;
34
+ """)
35
+
36
+
37
+ def downgrade() -> None:
38
+ op.execute("""
39
+ ALTER TABLE chat_messages
40
+ DROP CONSTRAINT IF EXISTS chat_messages_session_id_fkey;
41
+ """)
42
+
43
+ op.execute("""
44
+ ALTER TABLE chat_messages
45
+ ADD CONSTRAINT chat_messages_session_id_fkey
46
+ FOREIGN KEY (session_id)
47
+ REFERENCES chat_sessions(id);
48
+ """)
src/api/selectors/chat/delete_chat_session.py CHANGED
@@ -9,9 +9,14 @@ async def delete_chat_session(
9
  user_id: int,
10
  db: AsyncSession
11
  ) -> None:
12
- statement = delete(ChatSession).where(
 
 
 
 
 
13
  ChatSession.id == session_id,
14
  ChatSession.user_id == user_id
15
  )
16
- await db.execute(statement)
17
  await db.commit()
 
9
  user_id: int,
10
  db: AsyncSession
11
  ) -> None:
12
+ message_statement = delete(ChatMessage).where(
13
+ ChatMessage.session_id == session_id
14
+ )
15
+ await db.execute(message_statement)
16
+
17
+ session_statement = delete(ChatSession).where(
18
  ChatSession.id == session_id,
19
  ChatSession.user_id == user_id
20
  )
21
+ await db.execute(session_statement)
22
  await db.commit()