From cecadf9084673bebd4edad19b267c166773b804f Mon Sep 17 00:00:00 2001 From: Giovani Rodriguez Date: Thu, 24 Jul 2025 21:23:09 +0000 Subject: [PATCH] feat: add support for asyncpg --- backend/db/database.py | 17 +++++++++++------ backend/main.py | 5 +++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/db/database.py b/backend/db/database.py index 2114568..a9b1f66 100644 --- a/backend/db/database.py +++ b/backend/db/database.py @@ -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) diff --git a/backend/main.py b/backend/main.py index da43c69..63057cd 100644 --- a/backend/main.py +++ b/backend/main.py @@ -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():