config.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # -*- coding: utf-8 -*-
  2. from typing import Any, Dict, Optional
  3. from pydantic import (
  4. AnyHttpUrl,
  5. BaseSettings,
  6. DirectoryPath,
  7. PostgresDsn,
  8. SecretStr,
  9. validator,
  10. )
  11. class Settings(BaseSettings):
  12. # SERVER_NAME: str
  13. # SERVER_HOST: AnyHttpUrl
  14. PLATFORM_HOST: AnyHttpUrl
  15. PLATFORM_SECRET: SecretStr
  16. TRANSFER_HOST: AnyHttpUrl
  17. # WEATHER_HOST: AnyHttpUrl
  18. # HTTPS_PROXY: AnyHttpUrl
  19. TENCENT_NLP_ENDPOINT: str
  20. TENCENT_SECRET_ID_V1: str
  21. TENCENT_SECRET_KEY_V1: str
  22. DUCKLING_HOST: AnyHttpUrl
  23. # PROJECT_DIR: DirectoryPath
  24. # LOGS_DIR: DirectoryPath
  25. ML_MODELS_DIR: DirectoryPath
  26. PROJECT_NAME: str
  27. REDIS_HOST: str
  28. REDIS_PORT: int
  29. REDIS_DB: int
  30. REDIS_PASSWORD: str
  31. MILVUS_HOST: str
  32. MILVUS_PORT: str
  33. METRIC_TYPE: str
  34. VECTOR_DIMENSION: int
  35. POSTGRES_SERVER: str
  36. POSTGRES_USER: str
  37. POSTGRES_PASSWORD: str
  38. POSTGRES_DB: str
  39. SQLALCHEMY_DATABASE_URL: Optional[PostgresDsn] = None
  40. @validator("SQLALCHEMY_DATABASE_URL", pre=True)
  41. def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any:
  42. if isinstance(v, str):
  43. return v
  44. return PostgresDsn.build(
  45. scheme="postgresql",
  46. user=values.get("POSTGRES_USER"),
  47. password=values.get("POSTGRES_PASSWORD"),
  48. host=values.get("POSTGRES_SERVER"),
  49. path=f'/{values.get("POSTGRES_DB") or ""}',
  50. )
  51. class Config:
  52. case_sensitive = True
  53. env_file = ".env"
  54. settings = Settings()