config.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from pydantic_settings import BaseSettings
  2. from functools import lru_cache
  3. class Settings(BaseSettings):
  4. # Database
  5. DB_HOST: str = "47.99.164.66"
  6. DB_PORT: int = 3306
  7. DB_USER: str = "root"
  8. DB_PASSWORD: str = ""
  9. DB_NAME: str = "sx"
  10. # Redis
  11. REDIS_HOST: str = "47.99.164.66"
  12. REDIS_PORT: int = 16379
  13. REDIS_PASSWORD: str = ""
  14. REDIS_DB: int = 12
  15. # JWT (must match Java Sa-Token jwt-secret-key)
  16. JWT_SECRET_KEY: str = "abcdefghijklmnopqrstuvwxyz"
  17. JWT_ALGORITHM: str = "HS256"
  18. JWT_ACCESS_TOKEN_EXPIRE_MINUTES: int = 1440
  19. # App
  20. APP_HOST: str = "0.0.0.0"
  21. APP_PORT: int = 8080
  22. DEBUG: bool = True
  23. # Multi-tenant
  24. TENANT_ENABLE: bool = True
  25. @property
  26. def DATABASE_URL(self) -> str:
  27. return (
  28. f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}"
  29. f"@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
  30. )
  31. @property
  32. def REDIS_URL(self) -> str:
  33. return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}"
  34. model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
  35. @lru_cache
  36. def get_settings() -> Settings:
  37. return Settings()