"""Hassas verileri (DeepSeek anahtarı, X cookie'leri) şifreleyip DB'de saklamak için.
Fernet (AES) kullanır. Anahtar ilk çalıştırmada üretilip data/secret.key içinde tutulur."""
from cryptography.fernet import Fernet
import config


def _load_or_create_key() -> bytes:
    path = config.SECRET_KEY_FILE
    if path.exists():
        return path.read_bytes()
    key = Fernet.generate_key()
    path.write_bytes(key)
    return key


_fernet = Fernet(_load_or_create_key())


def encrypt(plaintext: str) -> str:
    if plaintext is None:
        return ""
    return _fernet.encrypt(plaintext.encode("utf-8")).decode("utf-8")


def decrypt(token: str) -> str:
    if not token:
        return ""
    try:
        return _fernet.decrypt(token.encode("utf-8")).decode("utf-8")
    except Exception:
        return ""


def mask(secret: str, show: int = 4) -> str:
    """Panelde gösterim için: sk-abcd...wxyz"""
    if not secret:
        return ""
    if len(secret) <= show * 2:
        return "•" * len(secret)
    return f"{secret[:show]}…{secret[-show:]}"
