mirror of
https://github.com/FutureOfMedTech-FITM-hack/backend.git
synced 2024-11-29 01:13:44 +03:00
100 lines
2.2 KiB
Python
100 lines
2.2 KiB
Python
|
import enum
|
||
|
from pathlib import Path
|
||
|
from tempfile import gettempdir
|
||
|
from typing import Optional
|
||
|
|
||
|
from pydantic import BaseSettings
|
||
|
from yarl import URL
|
||
|
|
||
|
TEMP_DIR = Path(gettempdir())
|
||
|
|
||
|
|
||
|
class LogLevel(str, enum.Enum): # noqa: WPS600
|
||
|
"""Possible log levels."""
|
||
|
|
||
|
NOTSET = "NOTSET"
|
||
|
DEBUG = "DEBUG"
|
||
|
INFO = "INFO"
|
||
|
WARNING = "WARNING"
|
||
|
ERROR = "ERROR"
|
||
|
FATAL = "FATAL"
|
||
|
|
||
|
|
||
|
class Settings(BaseSettings):
|
||
|
"""
|
||
|
Application settings.
|
||
|
|
||
|
These parameters can be configured
|
||
|
with environment variables.
|
||
|
"""
|
||
|
|
||
|
host: str = "127.0.0.1"
|
||
|
port: int = 8000
|
||
|
# quantity of workers for uvicorn
|
||
|
workers_count: int = 1
|
||
|
# Enable uvicorn reloading
|
||
|
reload: bool = False
|
||
|
|
||
|
# Current environment
|
||
|
environment: str = "dev"
|
||
|
|
||
|
log_level: LogLevel = LogLevel.INFO
|
||
|
|
||
|
# Variables for the database
|
||
|
db_host: str = "localhost"
|
||
|
db_port: int = 5432
|
||
|
db_user: str = "med_backend"
|
||
|
db_pass: str = "med_backend"
|
||
|
db_base: str = "med_backend"
|
||
|
db_echo: bool = False
|
||
|
|
||
|
# Variables for Redis
|
||
|
redis_host: str = "med_backend-redis"
|
||
|
redis_port: int = 6379
|
||
|
redis_user: Optional[str] = None
|
||
|
redis_pass: Optional[str] = None
|
||
|
redis_base: Optional[int] = None
|
||
|
|
||
|
@property
|
||
|
def db_url(self) -> URL:
|
||
|
"""
|
||
|
Assemble database URL from settings.
|
||
|
|
||
|
:return: database URL.
|
||
|
"""
|
||
|
return URL.build(
|
||
|
scheme="postgresql+asyncpg",
|
||
|
host=self.db_host,
|
||
|
port=self.db_port,
|
||
|
user=self.db_user,
|
||
|
password=self.db_pass,
|
||
|
path=f"/{self.db_base}",
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def redis_url(self) -> URL:
|
||
|
"""
|
||
|
Assemble REDIS URL from settings.
|
||
|
|
||
|
:return: redis URL.
|
||
|
"""
|
||
|
path = ""
|
||
|
if self.redis_base is not None:
|
||
|
path = f"/{self.redis_base}"
|
||
|
return URL.build(
|
||
|
scheme="redis",
|
||
|
host=self.redis_host,
|
||
|
port=self.redis_port,
|
||
|
user=self.redis_user,
|
||
|
password=self.redis_pass,
|
||
|
path=path,
|
||
|
)
|
||
|
|
||
|
class Config:
|
||
|
env_file = ".env"
|
||
|
env_prefix = "MED_BACKEND_"
|
||
|
env_file_encoding = "utf-8"
|
||
|
|
||
|
|
||
|
settings = Settings()
|