Spaces:
Build error
Build error
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
ChatSession.id == session_id,
|
| 14 |
ChatSession.user_id == user_id
|
| 15 |
)
|
| 16 |
-
await db.execute(
|
| 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()
|