config.py 1.1 KB

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