config.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. from typing import Any, Dict, Optional
  3. from pydantic import AnyHttpUrl, BaseSettings, DirectoryPath, PostgresDsn, SecretStr, validator
  4. class Settings(BaseSettings):
  5. # SERVER_NAME: str
  6. # SERVER_HOST: AnyHttpUrl
  7. PLATFORM_HOST: AnyHttpUrl
  8. PLATFORM_SECRET: SecretStr
  9. TRANSFER_HOST: AnyHttpUrl
  10. WEATHER_HOST: AnyHttpUrl
  11. HTTPS_PROXY: AnyHttpUrl
  12. TENCENT_NLP_ENDPOINT: str
  13. TENCENT_SECRET_ID_V1: str
  14. TENCENT_SECRET_KEY_V1: str
  15. DUCKLING_HOST: AnyHttpUrl
  16. PROJECT_DIR: DirectoryPath
  17. LOGS_DIR: DirectoryPath
  18. ML_MODELS_DIR: DirectoryPath
  19. PROJECT_NAME: str
  20. POSTGRES_SERVER: str
  21. POSTGRES_USER: str
  22. POSTGRES_PASSWORD: str
  23. POSTGRES_DB: str
  24. SQLALCHEMY_DATABASE_URL: Optional[PostgresDsn] = None
  25. @validator('SQLALCHEMY_DATABASE_URL', pre=True)
  26. def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any:
  27. if isinstance(v, str):
  28. return v
  29. return PostgresDsn.build(
  30. scheme='postgresql',
  31. user=values.get('POSTGRES_USER'),
  32. password=values.get('POSTGRES_PASSWORD'),
  33. host=values.get('POSTGRES_SERVER'),
  34. path=f'/{values.get("POSTGRES_DB") or ""}'
  35. )
  36. class Config:
  37. case_sensitive = True
  38. env_file = '.env'
  39. settings = Settings()