from pydantic_settings import BaseSettings from functools import lru_cache class Settings(BaseSettings): app_name: str = "SuperDream" debug: bool = False host: str = "0.0.0.0" port: int = 18000 # Database db_type: str = "mysql" db_host: str = "10.11.0.43" db_port: int = 3306 db_user: str = "root" db_password: str = "for_develop_only" db_name: str = "superdream" # Storage data_dir: str = "./data" # JWT jwt_secret: str = "superdream-secret-change-me" jwt_algorithm: str = "HS256" jwt_access_expire_minutes: int = 30 jwt_refresh_expire_days: int = 7 @property def database_url(self) -> str: return ( f"mysql+aiomysql://{self.db_user}:{self.db_password}" f"@{self.db_host}:{self.db_port}/{self.db_name}" ) class Config: env_file = ".env" env_prefix = "SD_" @lru_cache def get_settings() -> Settings: return Settings() settings = get_settings()