# ============================================ # database/connection.py — إدارة الاتصال بـ SQLite # ============================================ # مسؤول عن: إنشاء كل اتصال بأفضل إعدادات الأداء # لماذا هنا؟ فصل مسؤولية الاتصال عن منطق البيانات # ============================================ import sqlite3 import os import logging logger = logging.getLogger(__name__) # مسار قاعدة البيانات بجانب مجلد database/ DB_PATH = os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "bot_database.db" ) def get_connection() -> sqlite3.Connection: """ إنشاء اتصال بقاعدة البيانات مع أفضل إعدادات الأداء. PRAGMA المستخدمة وسببها: - WAL: كتابة متوازية (قراءة لا تحجب الكتابة) - cache_size=-65536: 64MB في الذاكرة (سرعة أعلى) - synchronous=NORMAL: توازن أمان/سرعة - foreign_keys=ON: تطبيق قيود العلاقات - row_factory: إرجاع النتائج كـ dict قابلة للوصول بالاسم """ conn = sqlite3.connect(DB_PATH, timeout=30) conn.execute("PRAGMA journal_mode=WAL") conn.execute("PRAGMA cache_size=-65536") conn.execute("PRAGMA synchronous=NORMAL") conn.execute("PRAGMA foreign_keys=ON") conn.row_factory = sqlite3.Row return conn