config_schema.py 1 KB
import ssl
from typing import Dict, List, Optional, Any

from pydantic import BaseModel, Field


def get_ctx():
    ctx = ssl.create_default_context()
    # And in this example we disable validation...
    # Please don't do this. Look at the official Python ``ssl`` module documentation
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE
    return ctx


class Credentials(BaseModel):
    database: str
    host: str
    password: str
    port: int
    user: str
    ssl: Any = Field(default_factory=get_ctx)
    minsize: Optional[int] = None
    maxsize: Optional[int] = None
    connect_timeout: Optional[int] = None
    echo: Optional[bool] = None


class Connection(BaseModel):
    engine: str
    credentials: Credentials


class App(BaseModel):
    models: List[str]
    default_connection: str


class TortoiseConfig(BaseModel):
    connections: Dict[str, Connection]
    apps: Dict[str, App]
    log_queries: bool


class Port(BaseModel):
    port: int


class AppConfig(BaseModel):
    server: Port