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)}")