# -*- 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 TENCENT_NLP_ENDPOINT: str TENCENT_SECRET_ID_V1: str TENCENT_SECRET_KEY_V1: str PROJECT_DIR: DirectoryPath LOGS_DIR: DirectoryPath PROJECT_NAME: str 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()