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
    # как часто панель опрашивает сетевые хранилища (сек)
    share_interval: int = 60


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