config.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """
  2. 配置管理
  3. """
  4. import os
  5. from pathlib import Path
  6. from dotenv import load_dotenv
  7. # 加载环境变量
  8. env_path = Path(__file__).parent.parent / '.env'
  9. load_dotenv(dotenv_path=env_path)
  10. class Settings:
  11. """应用配置"""
  12. # 数据库配置
  13. DB_HOST: str = os.getenv("DB_HOST", "localhost")
  14. DB_PORT: int = int(os.getenv("DB_PORT", "3306"))
  15. DB_USER: str = os.getenv("DB_USER", "root")
  16. DB_PASSWORD: str = os.getenv("DB_PASSWORD", "")
  17. DB_NAME: str = os.getenv("DB_NAME", "buff")
  18. # 数据库URL
  19. @property
  20. def DATABASE_URL(self) -> str:
  21. return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
  22. # 应用配置
  23. APP_ENV: str = os.getenv("APP_ENV", "development")
  24. DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true"
  25. SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key-change-in-production")
  26. # 加密配置
  27. ENCRYPT_ENABLED: bool = os.getenv("ENCRYPT_ENABLED", "true").lower() == "true"
  28. KEY_ROTATION_DAYS: int = int(os.getenv("KEY_ROTATION_DAYS", "10"))
  29. # 日志配置
  30. LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
  31. # API配置
  32. API_V1_PREFIX: str = "/api"
  33. ADMIN_PREFIX: str = "/admin"
  34. settings = Settings()