config.py 1.3 KB

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