Initial YakPanel commit
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"""YakPanel - Database configuration"""
|
||||
from pathlib import Path
|
||||
|
||||
from sqlalchemy.engine.url import URL, make_url
|
||||
from sqlalchemy.engine.url import make_url
|
||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
@@ -23,15 +23,21 @@ def _resolve_database_url(raw_url: str) -> str:
|
||||
else:
|
||||
path = path.resolve()
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
return str(URL.create(drivername=url.drivername, database=str(path)))
|
||||
# POSIX path for SQLite URL (backslashes break aiosqlite on unexpected setups)
|
||||
posix = path.as_posix()
|
||||
return str(url.set(database=posix))
|
||||
|
||||
|
||||
settings = get_settings()
|
||||
DATABASE_URL = _resolve_database_url(settings.database_url)
|
||||
|
||||
_engine_kw = {"echo": settings.debug}
|
||||
if make_url(DATABASE_URL).drivername.startswith("sqlite"):
|
||||
_engine_kw["connect_args"] = {"timeout": 30}
|
||||
|
||||
engine = create_async_engine(
|
||||
DATABASE_URL,
|
||||
echo=settings.debug,
|
||||
**_engine_kw,
|
||||
)
|
||||
|
||||
AsyncSessionLocal = async_sessionmaker(
|
||||
|
||||
Reference in New Issue
Block a user