mirror of
https://github.com/koloideal/DutyLog.git
synced 2026-06-10 10:25:29 +03:00
update
This commit is contained in:
@@ -1,7 +1,38 @@
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from collections.abc import AsyncIterable
|
||||
|
||||
from src.dutylog.infrastructure.database.dao.users_dao import UsersDAO
|
||||
from dishka import Provider, Scope, provide
|
||||
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker
|
||||
|
||||
from dutylog.infrastructure.database.config import create_engine, create_session_maker
|
||||
from dutylog.infrastructure.database.dao.users_dao import UsersDAO
|
||||
from dutylog.infrastructure.utils.config import Config, load_config
|
||||
|
||||
|
||||
def get_users_dao(session: AsyncSession) -> UsersDAO:
|
||||
return UsersDAO(session)
|
||||
class ConfigProvider(Provider):
|
||||
@provide(scope=Scope.APP)
|
||||
def get_config(self) -> Config:
|
||||
return load_config()
|
||||
|
||||
|
||||
class DatabaseProvider(Provider):
|
||||
@provide(scope=Scope.APP)
|
||||
def get_engine(self, config: Config) -> AsyncEngine:
|
||||
return create_engine(config.database.url)
|
||||
|
||||
@provide(scope=Scope.APP)
|
||||
def get_session_maker(self, engine: AsyncEngine) -> async_sessionmaker[AsyncSession]:
|
||||
return create_session_maker(engine)
|
||||
|
||||
@provide(scope=Scope.REQUEST)
|
||||
async def get_session(
|
||||
self, session_maker: async_sessionmaker[AsyncSession]
|
||||
) -> AsyncIterable[AsyncSession]:
|
||||
async with session_maker() as session:
|
||||
yield session
|
||||
|
||||
|
||||
class DAOProvider(Provider):
|
||||
@provide(scope=Scope.REQUEST)
|
||||
def get_users_dao(self, session: AsyncSession) -> UsersDAO:
|
||||
return UsersDAO(session)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user