remove fucking uow and replace it by TransactionContextManager

This commit is contained in:
2024-04-23 08:10:17 +00:00
parent 12d61e01e1
commit ad92682eda
11 changed files with 108 additions and 89 deletions

View File

@@ -2,23 +2,20 @@ from collections.abc import AsyncIterable
from typing import Annotated
from fastapi import Depends
from sqlalchemy.ext.asyncio import (
AsyncEngine,
AsyncSession,
async_sessionmaker,
create_async_engine,
)
from sqlalchemy.ext.asyncio import (AsyncEngine, AsyncSession,
async_sessionmaker, create_async_engine)
from api.application.abstractions import UnitOfWork
from api.application.abstractions.transaction import TransactionContextManager
from api.infrastructure.dependencies.stub import Stub
from api.infrastructure.persistence.uow import SqlAlchemyUnitOfWork
from api.infrastructure.persistence.transaction import \
SqlalchemyTransactionContextManager
from api.infrastructure.settings import Settings
def new_unit_of_work(
session: Annotated[AsyncSession, Depends(Stub(AsyncSession))],
) -> UnitOfWork:
return SqlAlchemyUnitOfWork(session)
def get_transaction_context(
session: Annotated[AsyncSession, Depends(Stub(AsyncSession))]
) -> TransactionContextManager:
return SqlalchemyTransactionContextManager(session)
def create_engine(

View File

@@ -2,7 +2,7 @@ from typing import Annotated
from fastapi import Depends
from api.application.abstractions.uow import UnitOfWork
from api.application.abstractions.transaction import TransactionContextManager
from api.application.protocols.password_hasher import PasswordHasher
from api.application.usecase.auth.create_user import CreateUser
from api.application.usecase.company.create_company import CreateCompany
@@ -15,21 +15,33 @@ from api.infrastructure.dependencies.stub import Stub
def provide_create_user(
user_repository: Annotated[UserRepository, Depends(Stub(UserRepository))],
uow: Annotated[UnitOfWork, Depends(Stub(UnitOfWork))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
password_hasher: Annotated[PasswordHasher, Depends(Stub(PasswordHasher))],
) -> CreateUser:
return CreateUser(
uow=uow, user_repository=user_repository, password_hasher=password_hasher
transaction=transaction,
user_repository=user_repository,
password_hasher=password_hasher,
)
def provide_get_companies_by_email(
company_repository: Annotated[CompanyRepository, Depends(Stub(CompanyRepository))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
) -> GetCompaniesByOwnerEmail:
return GetCompaniesByOwnerEmail(company_repository=company_repository)
return GetCompaniesByOwnerEmail(
transaction=transaction, company_repository=company_repository
)
def provide_create_company(
company_repository: Annotated[CompanyRepository, Depends(Stub(CompanyRepository))]
company_repository: Annotated[CompanyRepository, Depends(Stub(CompanyRepository))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
) -> CreateCompany:
return CreateCompany(company_repository=company_repository)
return CreateCompany(transaction=transaction, company_repository=company_repository)