123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- # -*- 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
- 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()
|