fix(db_chat): включение row_factory=True для доступа по именам колонок

This commit is contained in:
2026-09-11 15:55:47 +03:00
parent b1796de852
commit 86f223a21e
+9 -10
View File
@@ -7,7 +7,7 @@ from .connection import get_db_connection
def db_save_chat_message(session_id: str, role: str, content: str, is_ephemeral: int = 0) -> None:
"""Сохраняет сообщение в БД (is_ephemeral=1 для временных служебных шагов, 0 для постоянных)."""
conn = get_db_connection()
conn = get_db_connection(row_factory=True)
cursor = conn.cursor()
cursor.execute("""
INSERT INTO chat_messages (session_id, role, content, is_ephemeral)
@@ -17,20 +17,19 @@ def db_save_chat_message(session_id: str, role: str, content: str, is_ephemeral:
conn.close()
def db_get_chat_history(session_id: str, limit: int = 20) -> List[Dict[str, Any]]:
"""Получает последние сообщения истории диалога в хронологическом порядке."""
conn = get_db_connection()
def db_get_chat_history(session_id: str, limit: int = 50) -> list:
"""Возвращает историю сообщений диалога для сессии."""
with get_db_connection(row_factory=True) as conn:
cursor = conn.cursor()
cursor.execute("""
SELECT role, content
SELECT role, content, is_ephemeral, created_at
FROM chat_messages
WHERE session_id = ?
ORDER BY id DESC
LIMIT ?
""", (session_id, limit))
rows = cursor.fetchall()
conn.close()
return [{"role": r["role"], "content": r["content"]} for r in reversed(rows)]
return [{"role": r["role"], "content": r["content"], "is_ephemeral": r["is_ephemeral"]} for r in reversed(rows)]
def db_purge_ephemeral_messages(session_id: str) -> int:
@@ -38,7 +37,7 @@ def db_purge_ephemeral_messages(session_id: str) -> int:
Физически удаляет все временные служебные сообщения выбранной сессии
после завершения сценария работы с инструментом.
"""
conn = get_db_connection()
conn = get_db_connection(row_factory=True)
cursor = conn.cursor()
cursor.execute("DELETE FROM chat_messages WHERE session_id = ? AND is_ephemeral = 1", (session_id,))
deleted = cursor.rowcount
@@ -49,7 +48,7 @@ def db_purge_ephemeral_messages(session_id: str) -> int:
def db_clear_chat_history(session_id: str) -> None:
"""Полная очистка всех сообщений сессии."""
conn = get_db_connection()
conn = get_db_connection(row_factory=True)
cursor = conn.cursor()
cursor.execute("DELETE FROM chat_messages WHERE session_id = ?", (session_id,))
conn.commit()
@@ -57,7 +56,7 @@ def db_clear_chat_history(session_id: str) -> None:
def db_clear_all_chat_context(session_id: str = None, purge_all: bool = False) -> int:
"""Удаляет сообщения чата и стейты сессий."""
with get_db_connection() as conn:
with get_db_connection(row_factory=True) as conn:
cursor = conn.cursor()
if purge_all:
if session_id: