mirror of
https://github.com/Balshgit/different
synced 2025-09-11 02:50:41 +03:00
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from pydantic_settings import BaseSettings
|
|
|
|
BASE_DIR = Path(__file__).parent.parent
|
|
|
|
SHARED_DIR = BASE_DIR.resolve().joinpath("shared")
|
|
SHARED_DIR.joinpath("logs").mkdir(exist_ok=True)
|
|
DIR_LOGS = SHARED_DIR.joinpath("logs")
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings."""
|
|
|
|
DB_HOST: str = "db_host"
|
|
USE_DATABASE: str = "mysql"
|
|
DB_ECHO: bool = False
|
|
|
|
POSTGRES_DB_PORT: int = 5432
|
|
POSTGRES_DB: str = "sqlalchemy_study"
|
|
POSTGRES_USER: str = "user"
|
|
POSTGRES_PASSWORD: str = "postgrespwd"
|
|
|
|
MYSQL_DB_PORT: int = 3307
|
|
MYSQL_DATABASE: str = "sqlalchemy_study"
|
|
MYSQL_USER: str = "user"
|
|
MYSQL_PASSWORD: str = "mysqlpwd"
|
|
MYSQL_ROOT_PASSWORD: str = "mysqlpwd"
|
|
|
|
@property
|
|
def async_db_url(self) -> str:
|
|
"""
|
|
Assemble database URL from settings.
|
|
|
|
:return: database URL.
|
|
"""
|
|
async_postgres_url = (
|
|
f"postgresql+asyncpg://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@"
|
|
f"{self.DB_HOST}:{self.POSTGRES_DB_PORT}/{self.POSTGRES_DB}"
|
|
)
|
|
|
|
async_mysql_url = (
|
|
f"mysql+asyncmy://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@"
|
|
f"{self.DB_HOST}:{self.MYSQL_DB_PORT}/{self.MYSQL_DATABASE}"
|
|
)
|
|
if os.environ.get("USE_DATABASE", self.USE_DATABASE).lower() == "postgres":
|
|
return async_postgres_url
|
|
return async_mysql_url
|
|
|
|
@property
|
|
def sync_db_url(self) -> str:
|
|
"""
|
|
Assemble database URL from settings.
|
|
|
|
:return: database URL.
|
|
"""
|
|
sync_postgres_url = (
|
|
f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@"
|
|
f"{self.DB_HOST}:{self.POSTGRES_DB_PORT}/{self.POSTGRES_DB}"
|
|
)
|
|
|
|
sync_mysql_url = (
|
|
f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@"
|
|
f"{self.DB_HOST}:{self.MYSQL_DB_PORT}/{self.MYSQL_DATABASE}"
|
|
)
|
|
if os.environ.get("USE_DATABASE", self.USE_DATABASE).lower() == "postgres":
|
|
return sync_postgres_url
|
|
return sync_mysql_url
|
|
|
|
class Config:
|
|
env_file = "config/.env"
|
|
env_file_encoding = "utf-8"
|