Initial YakPanel commit

This commit is contained in:
Niranjan
2026-04-07 02:30:14 +05:30
parent 38568a474b
commit 47e0977b72
3 changed files with 16 additions and 7 deletions

View File

@@ -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(