from pydantic_settings import BaseSettings from typing import Optional class Settings(BaseSettings): # 项目信息 PROJECT_NAME: str = "期货统一数据平台" VERSION: str = "0.1.0" API_PREFIX: str = "/api/v1" # 数据库配置 DB_HOST: str = "postgres" DB_PORT: int = 5432 DB_NAME: str = "futures_data" DB_USER: str = "futures" DB_PASSWORD: str = "futures123" DATABASE_URL: str = "" # 直接指定完整 URL,支持 sqlite:/// @property def database_url(self) -> str: if self.DATABASE_URL: return self.DATABASE_URL return f"postgresql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" # Redis 配置 REDIS_HOST: str = "redis" REDIS_PORT: int = 6379 REDIS_DB: int = 0 REDIS_PASSWORD: Optional[str] = None @property def REDIS_URL(self) -> str: if self.REDIS_PASSWORD: return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}" return f"redis://{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}" # Tushare 配置 TUSHARE_TOKEN: str = "" # 服务配置 HOST: str = "0.0.0.0" PORT: int = 8000 DEBUG: bool = True class Config: env_file = ".env" case_sensitive = True settings = Settings()