remove fucking uow and replace it by TransactionContextManager
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
from .uow import UnitOfWork
|
||||
|
||||
__all__ = ("UnitOfWork",)
|
||||
|
@@ -1,9 +0,0 @@
|
||||
from typing import Protocol
|
||||
|
||||
|
||||
class UnitOfWork(Protocol):
|
||||
async def commit(self) -> None:
|
||||
raise NotImplementedError
|
||||
|
||||
async def rollback(self) -> None:
|
||||
raise NotImplementedError
|
@@ -1,9 +1,6 @@
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from api.application.abstractions import UnitOfWork
|
||||
from api.application.abstractions.transaction import TransactionContextManager
|
||||
from api.application.contracts.auth.auth_request import UserCreateRequest
|
||||
from api.application.protocols.password_hasher import PasswordHasher
|
||||
from api.domain.user.error import UserAlreadyExistsError
|
||||
from api.domain.user.model import User
|
||||
from api.domain.user.repository import UserRepository
|
||||
|
||||
@@ -11,11 +8,11 @@ from api.domain.user.repository import UserRepository
|
||||
class CreateUser:
|
||||
def __init__(
|
||||
self,
|
||||
uow: UnitOfWork,
|
||||
transaction: TransactionContextManager,
|
||||
user_repository: UserRepository,
|
||||
password_hasher: PasswordHasher,
|
||||
) -> None:
|
||||
self.uow = uow
|
||||
self.transaction = transaction
|
||||
self.user_repository = user_repository
|
||||
self.hasher = password_hasher
|
||||
|
||||
@@ -27,13 +24,6 @@ class CreateUser:
|
||||
hashed_password=self.hasher.hash_password(request.password),
|
||||
)
|
||||
|
||||
try:
|
||||
async with self.transaction as tr:
|
||||
await self.user_repository.create_user(user=user)
|
||||
await self.uow.commit()
|
||||
|
||||
except IntegrityError as e:
|
||||
msg = e.args[0].split("\n")[-1]
|
||||
msg = msg.split(":")[1].strip()
|
||||
|
||||
if "email" in msg:
|
||||
raise UserAlreadyExistsError(message=msg)
|
||||
await tr.commit()
|
||||
|
@@ -1,12 +1,20 @@
|
||||
from api.application.abstractions.transaction import TransactionContextManager
|
||||
from api.application.contracts.company.company_request import CreateNewCompany
|
||||
from api.application.contracts.company.company_response import CompanyBaseResponse
|
||||
from api.application.contracts.company.company_response import \
|
||||
CompanyBaseResponse
|
||||
from api.domain.company.repository import CompanyRepository
|
||||
|
||||
|
||||
class CreateCompany:
|
||||
def __init__(self, company_repository: CompanyRepository) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
transaction: TransactionContextManager,
|
||||
company_repository: CompanyRepository,
|
||||
) -> None:
|
||||
self.company_repository = company_repository
|
||||
self.transaction = transaction
|
||||
|
||||
async def execute(self, request: CreateNewCompany) -> CompanyBaseResponse:
|
||||
# companies = await self.company_repository.
|
||||
return CompanyBaseResponse(name=request.name, email=request.email)
|
||||
async with self.transaction as tr:
|
||||
# companies = await self.company_repository.
|
||||
return CompanyBaseResponse(name=request.name, email=request.email)
|
||||
|
@@ -1,12 +1,26 @@
|
||||
from api.application.contracts.company.company_request import CompanyByOwnerEmail
|
||||
from api.application.contracts.company.company_response import CompanyBaseResponse
|
||||
from api.application.abstractions.transaction import TransactionContextManager
|
||||
from api.application.contracts.company.company_request import \
|
||||
CompanyByOwnerEmail
|
||||
from api.application.contracts.company.company_response import \
|
||||
CompanyBaseResponse
|
||||
from api.domain.company.repository import CompanyRepository
|
||||
|
||||
|
||||
class GetCompaniesByOwnerEmail:
|
||||
def __init__(self, company_repository: CompanyRepository) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
transaction: TransactionContextManager,
|
||||
company_repository: CompanyRepository,
|
||||
) -> None:
|
||||
self.company_repository = company_repository
|
||||
self.transaction = transaction
|
||||
|
||||
async def execute(self, request: CompanyByOwnerEmail) -> list[CompanyBaseResponse]:
|
||||
companies = await self.company_repository.get_companies_by_owner_email(filter={"email": request.email})
|
||||
return [CompanyBaseResponse(name=comp.name.value, email=comp.email.value) for comp in companies]
|
||||
async with self.transaction:
|
||||
companies = await self.company_repository.get_companies_by_owner_email(
|
||||
filter={"email": request.email}
|
||||
)
|
||||
return [
|
||||
CompanyBaseResponse(name=comp.name.value, email=comp.email.value)
|
||||
for comp in companies
|
||||
]
|
||||
|
@@ -1,15 +1,18 @@
|
||||
from api.application.abstractions import UnitOfWork
|
||||
from api.application.abstractions.transaction import TransactionContextManager
|
||||
from api.application.contracts.user import GetUserByEmailRequest, UserResponse
|
||||
from api.domain.user.repository import UserRepository
|
||||
|
||||
|
||||
class GetUserByEmail:
|
||||
def __init__(self, uow: UnitOfWork, user_repository: UserRepository) -> None:
|
||||
self.uow = uow
|
||||
def __init__(
|
||||
self, transaction: TransactionContextManager, user_repository: UserRepository
|
||||
) -> None:
|
||||
self.transaction = transaction
|
||||
self.user_repository = user_repository
|
||||
|
||||
async def execute(self, request: GetUserByEmailRequest) -> UserResponse | None:
|
||||
user = await self.user_repository.get_user(filter={"email": request.email})
|
||||
if user:
|
||||
async with self.transaction:
|
||||
user = await self.user_repository.get_user(filter={"email": request.email})
|
||||
if user:
|
||||
return None
|
||||
return None
|
||||
return None
|
||||
|
Reference in New Issue
Block a user