service_man/api/application/usecase/auth/create_user.py

30 lines
1.0 KiB
Python
Raw Permalink Normal View History

from api.application.abstractions.transaction import TransactionContextManager
2024-04-01 12:19:10 +03:00
from api.application.contracts.auth.auth_request import UserCreateRequest
from api.application.protocols.password_hasher import PasswordHasher
2024-03-31 04:18:41 +03:00
from api.domain.user.model import User
from api.domain.user.repository import UserRepository
class CreateUser:
def __init__(
self,
transaction: TransactionContextManager,
user_repository: UserRepository,
password_hasher: PasswordHasher,
) -> None:
self.transaction = transaction
2024-03-31 04:18:41 +03:00
self.user_repository = user_repository
self.hasher = password_hasher
2024-03-31 04:18:41 +03:00
async def execute(self, request: UserCreateRequest) -> None:
user = User.create(
name=request.name,
2024-04-21 23:46:17 +03:00
last_name=request.last_name,
email=request.email,
hashed_password=self.hasher.hash_password(request.password),
)
2024-04-21 23:46:17 +03:00
async with self.transaction as tr:
2024-04-21 23:46:17 +03:00
await self.user_repository.create_user(user=user)
await tr.commit()