bot_v4 / database /connection.py
qqqsfasdf's picture
Upload 70 files
036b534 verified
# ============================================
# 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