from functools import lru_cache
from pathlib import Path

from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    """Настройки panel, всё через env с префиксом GHARD_ (см. .env.example)."""

    model_config = SettingsConfigDict(env_prefix="GHARD_", env_file=".env", extra="ignore")

    database_path: Path = Path("/data/hard-panel.db")
    # пусто = API панели открыт без авторизации (личная панель);
    # если задан — доступ только с Bearer-токеном
    admin_token: str = ""
    # offline = нет данных дольше offline_multiplier * interval агента (сек)
    offline_multiplier: int = 3


@lru_cache
def get_settings() -> Settings:
    return Settings()