coder-demo / memory.py
AhmadA82's picture
p
e51c6d4 verified
raw
history blame
2.03 kB
import sqlite3
import json
import os
import logging
logger = logging.getLogger(__name__)
base_dir = os.path.dirname(os.path.abspath(__file__))
DB_DIR = os.path.join(base_dir, "data")
DB_PATH = os.path.join(DB_DIR, "chat_memory.db")
os.makedirs(DB_DIR, exist_ok=True)
try:
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute('''
CREATE TABLE IF NOT EXISTS memory (
session_id TEXT PRIMARY KEY,
history TEXT
)
''')
conn.commit()
conn.close()
logger.info(f"✅ تم إنشاء/فتح قاعدة البيانات في: {DB_PATH}")
except sqlite3.Error as e:
logger.error(f"❌ خطأ في إنشاء قاعدة البيانات: {str(e)}")
def get_history(session_id: str):
try:
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute("SELECT history FROM memory WHERE session_id = ?", (session_id,))
row = c.fetchone()
conn.close()
if not row or not isinstance(row[0], str):
return []
data = json.loads(row[0])
if isinstance(data, list) and all(isinstance(pair, list) and len(pair) == 2 for pair in data):
return data
else:
logger.warning(f"⚠️ تم تجاهل تاريخ غير متوافق: {type(data)}")
return []
except Exception as e:
logger.error(f"❌ خطأ أثناء استرجاع التاريخ: {str(e)}")
return []
def save_history(session_id: str, history: list):
try:
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute(
"REPLACE INTO memory (session_id, history) VALUES (?, ?)",
(session_id, json.dumps(history))
)
conn.commit()
conn.close()
logger.debug(f"💾 تم حفظ التاريخ للجلسة: {session_id}")
except Exception as e:
logger.error(f"❌ خطأ أثناء حفظ التاريخ: {str(e)}")