diff --git a/src/fastapi_app/lib/app/settings.py b/src/fastapi_app/lib/app/settings.py index 22149c4..e3853ea 100644 --- a/src/fastapi_app/lib/app/settings.py +++ b/src/fastapi_app/lib/app/settings.py @@ -8,7 +8,7 @@ import lib.app.split_settings as app_split_settings class Settings(pydantic_settings.BaseSettings): api: app_split_settings.ApiSettings = pydantic.Field(default_factory=lambda: app_split_settings.ApiSettings()) - db: app_split_settings.PostgresSettings = pydantic.Field( + postgres: app_split_settings.PostgresSettings = pydantic.Field( default_factory=lambda: app_split_settings.PostgresSettings() ) logger: app_split_settings.LoggingSettings = pydantic.Field( diff --git a/src/fastapi_app/lib/db/postgres.py b/src/fastapi_app/lib/db/postgres.py index 2e7ab6c..9bddc52 100644 --- a/src/fastapi_app/lib/db/postgres.py +++ b/src/fastapi_app/lib/db/postgres.py @@ -2,30 +2,32 @@ import typing import sqlalchemy.ext.asyncio as sa_asyncio -import lib.app.settings as app_settings +import lib.app.split_settings as app_split_settings class AsyncDB: """Async DB connection.""" - def __init__(self, settings: app_settings.Settings): + def __init__(self, settings: app_split_settings.DBSettings): self.engine = sa_asyncio.create_async_engine( - url=settings.db.dsn, - pool_size=settings.db.pool_size, - pool_pre_ping=settings.db.pool_pre_ping, - echo=settings.db.echo, + url=settings.dsn, + pool_size=settings.pool_size, + pool_pre_ping=settings.pool_pre_ping, + echo=settings.echo, future=True, ) self.async_session = sa_asyncio.async_sessionmaker( bind=self.engine, - autocommit=settings.db.auto_commit, - autoflush=settings.db.auto_flush, - expire_on_commit=settings.db.expire_on_commit, + autocommit=settings.auto_commit, + autoflush=settings.auto_flush, + expire_on_commit=settings.expire_on_commit, class_=sa_asyncio.AsyncSession, ) -async def get_session(settings: app_settings.Settings) -> typing.AsyncGenerator[sa_asyncio.AsyncSession, typing.Any]: +async def get_session( + settings: app_split_settings.DBSettings, +) -> typing.AsyncGenerator[sa_asyncio.AsyncSession, typing.Any]: db = AsyncDB(settings) async with db.async_session() as session: try: