diff --git a/src/genesis/server/store.py b/src/genesis/server/store.py index 18a3ab9..0ef47a9 100644 --- a/src/genesis/server/store.py +++ b/src/genesis/server/store.py @@ -197,6 +197,7 @@ class SessionStore: def delete_session(self, session_id: str) -> bool: with self._conn() as c: + c.execute("DELETE FROM chat_messages WHERE session_id = ?", (session_id,)) cur = c.execute("DELETE FROM sessions WHERE session_id = ?", (session_id,)) return cur.rowcount > 0 diff --git a/tests/test_server_store.py b/tests/test_server_store.py index e5452c3..bd58b56 100644 --- a/tests/test_server_store.py +++ b/tests/test_server_store.py @@ -234,3 +234,12 @@ def test_list_sessions_no_project_returns_all(store): store.create_session("u1", name="A", project="stock") store.create_session("u1", name="B", project="other") assert len(store.list_sessions("u1")) == 2 + +def test_delete_session_cascades_messages(store): + rec = store.create_session("u1", name="A", project="stock") + store.add_message(rec.session_id, "user", "hi") + store.add_message(rec.session_id, "assistant", "ok") + assert len(store.list_messages(rec.session_id)) == 2 + ok = store.delete_session(rec.session_id) + assert ok is True + assert store.list_messages(rec.session_id) == []