sentinel-api / app /services /cache_manager.py
Mustafa Öztürk
Deploy Sentinel API to HF Space
857d4f5
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)