feat: add support for asyncpg

This commit is contained in:
2025-07-24 21:23:09 +00:00
parent 929ed9db9b
commit 26dd45ae95
2 changed files with 14 additions and 8 deletions

View File

@@ -1,14 +1,19 @@
from databases import Database
from sqlalchemy import create_engine, MetaData
from sqlalchemy import MetaData
from sqlalchemy.orm import declarative_base
from sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine
from backend.config import settings
# for Alembic migrations and sync operations
engine = create_engine(settings.database_url)
# to use with async requests
database = Database(settings.database_url)
metadata = MetaData()
Base = declarative_base(metadata=metadata)
# async engine for use with run_sync and sessionmaker
engine = create_async_engine(
settings.database_url,
echo=(settings.environment == "dev"),
future=True,
)
# asyncpg connection used by `databases` package
database = Database(settings.database_url)

View File

@@ -19,8 +19,9 @@ app.add_middleware(
async def startup():
await database.connect()
# create tables if they don't exist
Base.metadata.create_all(bind=engine)
# create tables if they don't exist TODO: maybe?
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
@app.on_event("shutdown")
async def shutdown():