31 lines
793 B
Python
31 lines
793 B
Python
import os
|
|
|
|
from sqlalchemy.engine import URL
|
|
|
|
from app.core.settings import get_settings
|
|
|
|
|
|
def sqlite_url(path: str) -> str:
|
|
parent = os.path.dirname(path)
|
|
if parent:
|
|
os.makedirs(parent, exist_ok=True)
|
|
return f"sqlite+pysqlite:///{path}"
|
|
|
|
|
|
def postgres_url(user: str, password: str, host: str, port: int, db: str) -> str:
|
|
return URL.create(
|
|
drivername="postgresql+psycopg",
|
|
username=user,
|
|
password=password,
|
|
host=host,
|
|
port=port,
|
|
database=db,
|
|
).render_as_string(hide_password=False)
|
|
|
|
|
|
def get_common_db_url() -> str:
|
|
s = get_settings()
|
|
if s.DB_BACKEND.lower() == "sqlite":
|
|
return sqlite_url(s.SQLITE_COMMON_PATH)
|
|
return postgres_url(s.PG_USER, s.PG_PASSWORD, s.PG_HOST, s.PG_PORT, s.PG_DB_COMMON)
|