import redis
import os

# Membaca konfigurasi dari env
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)

# Inisialisasi Redis Client
redis_client = redis.Redis(
    host=REDIS_HOST,
    port=REDIS_PORT,
    db=REDIS_DB,
    password=REDIS_PASSWORD,
    decode_responses=True,
    protocol=2
)

def store_otp(phone: str, otp: str, ttl_seconds: int = 300) -> bool:
    """Menyimpan kode OTP dengan waktu kedaluwarsa (TTL) default 5 menit."""
    key = f"otp:{phone}"
    return redis_client.set(key, otp, ex=ttl_seconds)

def verify_and_delete_otp(phone: str, input_otp: str) -> bool:
    """
    Memverifikasi kecocokan OTP. Jika cocok, OTP akan langsung dihapus
    dari Redis agar tidak dapat disalahgunakan kembali.
    """
    key = f"otp:{phone}"
    stored_otp = redis_client.get(key)
    
    if stored_otp and stored_otp == input_otp:
        redis_client.delete(key)  # Hapus OTP langsung setelah sukses verifikasi
        return True
        
    return False
