# -*- coding: utf-8 -*- from typing import Any, Dict, Optional from pydantic import ( AnyHttpUrl, BaseSettings, DirectoryPath, PostgresDsn, SecretStr, validator, ) class Settings(BaseSettings): # SERVER_NAME: str # SERVER_HOST: AnyHttpUrl PLATFORM_HOST: AnyHttpUrl PLATFORM_SECRET: SecretStr TRANSFER_HOST: AnyHttpUrl # WEATHER_HOST: AnyHttpUrl # HTTPS_PROXY: AnyHttpUrl TENCENT_NLP_ENDPOINT: str TENCENT_SECRET_ID_V1: str TENCENT_SECRET_KEY_V1: str DUCKLING_HOST: AnyHttpUrl # PROJECT_DIR: DirectoryPath # LOGS_DIR: DirectoryPath ML_MODELS_DIR: DirectoryPath PROJECT_NAME: str REDIS_HOST: str REDIS_PORT: int REDIS_DB: int REDIS_PASSWORD: str MILVUS_HOST: str MILVUS_PORT: str METRIC_TYPE: str VECTOR_DIMENSION: int POSTGRES_SERVER: str POSTGRES_USER: str POSTGRES_PASSWORD: str POSTGRES_DB: str SQLALCHEMY_DATABASE_URL: Optional[PostgresDsn] = None @validator("SQLALCHEMY_DATABASE_URL", pre=True) def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any: if isinstance(v, str): return v return PostgresDsn.build( scheme="postgresql", user=values.get("POSTGRES_USER"), password=values.get("POSTGRES_PASSWORD"), host=values.get("POSTGRES_SERVER"), path=f'/{values.get("POSTGRES_DB") or ""}', ) class Config: case_sensitive = True env_file = ".env" settings = Settings()