from functools import lru_cache from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """Runtime configuration for the Fan Passport API.""" app_name: str = "Fan Passport API" environment: str = "local" database_url: str = "sqlite:///./fan_passport.db" auto_create_tables: bool = True admin_api_key: str | None = None enable_dev_auth: bool = True cors_origins: list[str] = Field( default_factory=lambda: ["http://localhost:5173", "http://127.0.0.1:5173"] ) model_config = SettingsConfigDict( env_prefix="FAN_PASSPORT_", env_file=".env", env_file_encoding="utf-8", extra="ignore", ) @property def is_localish(self) -> bool: return self.environment.lower() in {"local", "test", "development", "dev"} @lru_cache(maxsize=1) def get_settings() -> Settings: return Settings()