config.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. TENCENT_NLP_ENDPOINT: str
  12. TENCENT_SECRET_ID_V1: str
  13. TENCENT_SECRET_KEY_V1: str
  14. PROJECT_DIR: DirectoryPath
  15. LOGS_DIR: DirectoryPath
  16. PROJECT_NAME: str
  17. POSTGRES_SERVER: str
  18. POSTGRES_USER: str
  19. POSTGRES_PASSWORD: str
  20. POSTGRES_DB: str
  21. SQLALCHEMY_DATABASE_URL: Optional[PostgresDsn] = None
  22. @validator('SQLALCHEMY_DATABASE_URL', pre=True)
  23. def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any:
  24. if isinstance(v, str):
  25. return v
  26. return PostgresDsn.build(
  27. scheme='postgresql',
  28. user=values.get('POSTGRES_USER'),
  29. password=values.get('POSTGRES_PASSWORD'),
  30. host=values.get('POSTGRES_SERVER'),
  31. path=f'/{values.get("POSTGRES_DB") or ""}'
  32. )
  33. class Config:
  34. case_sensitive = True
  35. env_file = '.env'
  36. settings = Settings()