123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # -*- coding: utf-8 -*-
- import secrets
- from typing import Any, Dict, Optional
- from pydantic import AnyHttpUrl, BaseSettings, DirectoryPath, PostgresDsn, SecretStr, validator
- class Settings(BaseSettings):
- API_V1_STR: str = '/api/v1'
- SECRET_KEY: str = secrets.token_urlsafe(32)
- # 60 minutes * 24 hours * 8 days = 8 days
- ACCESS_TOKEN_MINUTES: int = 60 * 24 * 8
- # SERVER_NAME: str
- # SERVER_HOST: AnyHttpUrl
- PLATFORM_HOST: AnyHttpUrl
- PLATFORM_SECRET: SecretStr
- TRANSFER_HOST: AnyHttpUrl
- LOGS_DIR: Optional[DirectoryPath] = None
- PROJECT_NAME: str
- POSTGRES_SERVER: str
- POSTGRES_USER: str
- POSTGRES_PASSWORD: str
- POSTGRES_DB: str
- SQLALCHEMY_DATABASE_URI: Optional[PostgresDsn] = None
- @validator('SQLALCHEMY_DATABASE_URI', 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()
|