refactor(core): декомпозиция db_cli, сервисный дамп БД и зачистка контекста

This commit is contained in:
2026-09-11 15:25:44 +03:00
parent baa5073b88
commit 66a17bde45
3 changed files with 64 additions and 49 deletions
+33 -1
View File
@@ -53,4 +53,36 @@ def db_clear_chat_history(session_id: str) -> None:
cursor = conn.cursor()
cursor.execute("DELETE FROM chat_messages WHERE session_id = ?", (session_id,))
conn.commit()
conn.close()
conn.close()
def db_clear_all_chat_context(session_id: str = None, purge_all: bool = False) -> int:
"""Удаляет сообщения чата и стейты сессий."""
with get_db_connection() as conn:
cursor = conn.cursor()
if purge_all:
if session_id:
cursor.execute("DELETE FROM chat_messages WHERE session_id = ?", (session_id,))
cursor.execute("DELETE FROM session_states WHERE session_id = ?", (session_id,))
else:
cursor.execute("DELETE FROM chat_messages")
cursor.execute("DELETE FROM session_states")
cnt = cursor.rowcount
conn.commit()
return cnt
query = """
DELETE FROM chat_messages
WHERE is_ephemeral = 1
OR content LIKE '%Предпросмотр изменений%'
OR content LIKE '%Удален пункт:%'
OR content LIKE '%добавлен пункт:%'
"""
if session_id:
cursor.execute(query + " AND session_id = ?", (session_id,))
cursor.execute("DELETE FROM session_states WHERE session_id = ?", (session_id,))
else:
cursor.execute(query)
cursor.execute("DELETE FROM session_states")
cnt = cursor.rowcount
conn.commit()
return cnt