feat(shared): create general config model

This commit is contained in:
jo 2022-02-18 23:33:00 +01:00 committed by Kyle Robbertze
parent d9852940d6
commit 9d7d0ee6ca
1 changed files with 19 additions and 0 deletions

View File

@ -3,6 +3,7 @@ from configparser import ConfigParser
from os import environ
from pathlib import Path
from typing import Any, Dict, Optional, Union
from urllib.parse import urlunsplit
from loguru import logger
@ -98,6 +99,24 @@ class BaseConfig(BaseModel):
sys.exit(1)
# pylint: disable=too-few-public-methods
class GeneralConfig(BaseModel):
api_key: str
protocol: str = "http"
base_url: str = "localhost"
base_port: int = 80
base_dir: str = "/"
force_ssl: bool = False
@property
def public_url(self) -> str:
scheme = "https" if self.force_ssl else self.protocol
url = urlunsplit((scheme, self.base_url, self.base_dir, None, None))
return url.rstrip("/")
# pylint: disable=too-few-public-methods
class DatabaseConfig(BaseModel):
host: str = "localhost"