diff --git a/src/api/dependacies/db_dep.py b/src/api/dependacies/db_dep.py index 3be1e5d..df46f22 100644 --- a/src/api/dependacies/db_dep.py +++ b/src/api/dependacies/db_dep.py @@ -4,7 +4,7 @@ from fastapi import Depends from sqlalchemy.ext.asyncio import AsyncSession from src.core.database import async_session_maker -from src.utils.db_manager import DBManager +from src.core.db_manager import DBManager async def get_db() -> AsyncGenerator[AsyncSession, None]: @@ -13,5 +13,3 @@ async def get_db() -> AsyncGenerator[AsyncSession, None]: sessionDep = Annotated[AsyncSession, Depends(get_db)] - - diff --git a/src/utils/db_manager.py b/src/core/db_manager.py similarity index 100% rename from src/utils/db_manager.py rename to src/core/db_manager.py diff --git a/src/core/interfaces.py b/src/core/interfaces.py new file mode 100644 index 0000000..fcf1383 --- /dev/null +++ b/src/core/interfaces.py @@ -0,0 +1,16 @@ +from typing import Protocol + +from src.repository.users import UsersRepo + + +class IUnitOfWork(Protocol): + user: UsersRepo + + async def __aenter__(self) -> "IUnitOfWork": + ... + + async def __aexit__(self, exc_type, exc_val, exc_tb) -> None: + ... + + async def commit(self) -> None: + ... \ No newline at end of file diff --git a/src/schemas/users.py b/src/schemas/users.py index 1ee78b0..745d20f 100644 --- a/src/schemas/users.py +++ b/src/schemas/users.py @@ -17,4 +17,3 @@ class UserRequest(BaseModel): username: str email: EmailStr | None = None password: str - diff --git a/src/services/base.py b/src/services/base.py index 9451e22..04ff0ab 100644 --- a/src/services/base.py +++ b/src/services/base.py @@ -1,9 +1,8 @@ -from src.utils.db_manager import DBManager +from src.core.interfaces import IUnitOfWork class BaseService: - session: DBManager | None + session: IUnitOfWork | None - def __init__(self, session: DBManager): + def __init__(self, session: "IUnitOfWork"): self.session = session -