import os
from slowapi import Limiter
from slowapi.util import get_remote_address

# Membaca konfigurasi dari env (sama dengan konfigurasi di redis_helper)
REDIS_HOST = os.getenv("REDIS_HOST", "localhost")
REDIS_PORT = int(os.getenv("REDIS_PORT", 6379))
REDIS_DB = int(os.getenv("REDIS_DB", 0))
REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", None)

# Membangun storage_uri untuk limits
if REDIS_PASSWORD:
    STORAGE_URI = f"redis://:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}?protocol=2"
else:
    STORAGE_URI = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}?protocol=2"

# Inisialisasi Limiter dengan Redis sebagai storage
# Jika redis tidak bisa dihubungi, secara default limits juga mendukung memory fallback 
# tapi di sini kita eksplisit pasang ke Redis
limiter = Limiter(
    key_func=get_remote_address,
    storage_uri=STORAGE_URI
)
