config.py 1.3 KB

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