from pydantic_settings import BaseSettings from functools import lru_cache class Settings(BaseSettings): # App APP_NAME: str = "Game Marathon" DEBUG: bool = False # Database DATABASE_URL: str = "postgresql+asyncpg://marathon:marathon@localhost:5432/marathon" # Security SECRET_KEY: str = "your-secret-key-change-in-production" ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 days # OpenAI OPENAI_API_KEY: str = "" # Telegram TELEGRAM_BOT_TOKEN: str = "" # Uploads UPLOAD_DIR: str = "uploads" MAX_UPLOAD_SIZE: int = 15 * 1024 * 1024 # 15 MB ALLOWED_IMAGE_EXTENSIONS: set = {"jpg", "jpeg", "png", "gif", "webp"} ALLOWED_VIDEO_EXTENSIONS: set = {"mp4", "webm", "mov"} @property def ALLOWED_EXTENSIONS(self) -> set: return self.ALLOWED_IMAGE_EXTENSIONS | self.ALLOWED_VIDEO_EXTENSIONS class Config: env_file = ".env" extra = "ignore" @lru_cache def get_settings() -> Settings: return Settings() settings = get_settings()