config.py 1.1 KB

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