config.py 1.1 KB

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