from functools import lru_cache from pydantic_settings import BaseSettings class Settings(BaseSettings): """Application settings""" # Application app_env: str = "development" debug: bool = True secret_key: str # Database database_url: str db_pool_size: int = 20 db_max_overflow: int = 10 # Redis redis_url: str = "redis://localhost:6379/0" # Discord OAuth discord_client_id: str discord_client_secret: str discord_redirect_uri: str # League APIs sba_api_url: str sba_api_key: str pd_api_url: str pd_api_key: str # WebSocket ws_heartbeat_interval: int = 30 ws_connection_timeout: int = 60 # CORS cors_origins: list[str] = ["http://localhost:3000", "http://localhost:3001"] # Game settings max_concurrent_games: int = 20 game_idle_timeout: int = 86400 # 24 hours class Config: env_file = ".env" case_sensitive = False @lru_cache() def get_settings() -> Settings: """Get cached settings instance""" return Settings()