from app.db.supabase_client import get_supabase_client CACHE_KUFUR_DICT_TR = {} CACHE_KUFUR_DICT_EN = {} def load_blacklist_to_ram(): """Supabase limitlerini (1000 satır) aşan sayfalama destekli loader.""" global CACHE_KUFUR_DICT_TR, CACHE_KUFUR_DICT_EN temp_tr = {} temp_en = {} supabase = get_supabase_client() if supabase is None: print("⚠️ Supabase bağlantısı yok!") return try: print("🌐 Supabase'den tüm liste çekiliyor...") all_rows = [] start = 0 page_size = 1000 while True: response = ( supabase.table("blacklist") .select("word, language, category") .range(start, start + page_size - 1) .execute() ) data = response.data or [] all_rows.extend(data) if len(data) < page_size: break start += page_size print(f"📊 Toplam çekilen satır: {len(all_rows)}") found_langs = set() for row in all_rows: lang_raw = str(row.get("language", "")).lower().strip() word = str(row.get("word", "")).lower().strip() cat = str(row.get("category", "insult")).lower().strip() or "insult" if not word: continue found_langs.add(lang_raw) if lang_raw == "tr": temp_tr[word] = cat elif lang_raw == "en": temp_en[word] = cat CACHE_KUFUR_DICT_TR = temp_tr CACHE_KUFUR_DICT_EN = temp_en print(f"🔍 Veritabanındaki diller: {found_langs}") print(f"✅ RAM Hazır: {len(temp_tr)} TR, {len(temp_en)} EN kelime.") except Exception as exc: print(f"❌ Cache Hatası: {exc}") def get_blacklist_for_language(language: str): return CACHE_KUFUR_DICT_TR if language == "tr" else CACHE_KUFUR_DICT_EN def get_cache_counts(): return len(CACHE_KUFUR_DICT_TR), len(CACHE_KUFUR_DICT_EN)