remove fucking uow and replace it by TransactionContextManager
This commit is contained in:
@@ -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(
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user