from django.db import models
from apps.core.models import BaseModel

class PlatformSetting(BaseModel):
    key = models.CharField(max_length=100, unique=True, db_index=True)
    value = models.CharField(max_length=255)
    description = models.TextField(blank=True)

    def __str__(self):
        return f"{self.key}: {self.value}"

    @staticmethod
    def get_bool(key: str, default: bool = False) -> bool:
        try:
            setting = PlatformSetting.objects.get(key=key)
            return setting.value.lower() in ("1", "true", "yes", "on")
        except PlatformSetting.DoesNotExist:
            return default

    @staticmethod
    def get_value(key: str, default: str = "") -> str:
        try:
            setting = PlatformSetting.objects.get(key=key)
            return setting.value
        except PlatformSetting.DoesNotExist:
            return default

    @staticmethod
    def set_value(key: str, value: str):
        obj, _ = PlatformSetting.objects.get_or_create(key=key)
        obj.value = str(value or "")
        obj.save()

    @staticmethod
    def set_bool(key: str, value: bool):
        obj, _ = PlatformSetting.objects.get_or_create(key=key)
        obj.value = "true" if value else "false"
        obj.save()
