from django.core.cache import cache
from apps.appointments.models import FeatureFlag


def is_feature_enabled(key: str, default=False):
    cache_key = f"feature_flag:{key}"

    value = cache.get(cache_key)
    if value is not None:
        return value

    try:
        value = FeatureFlag.objects.get(key=key).enabled
    except FeatureFlag.DoesNotExist:
        value = default

    cache.set(cache_key, value, 60)  # 60 seconds cache
    return value
