20 lines
901 B
Python
20 lines
901 B
Python
from src.application.abstractions import IUnitOfWork
|
|
from src.application.contracts import ILogger, ICache
|
|
from src.application.domain.entities import UserEntity
|
|
from src.application.domain.enums.account_type import AccountType
|
|
from src.infrastructure.database.decorators import transactional
|
|
|
|
|
|
class GetMeCommand:
|
|
def __init__(self, unit_of_work: IUnitOfWork, logger: ILogger, cache: ICache):
|
|
self._unit_of_work = unit_of_work
|
|
self._logger = logger
|
|
self._cache = cache
|
|
|
|
@transactional
|
|
async def __call__(self, user_id: str) -> UserEntity:
|
|
user = await self._unit_of_work.user_repository.get_user_by_id(user_id=user_id)
|
|
if user.account_type == AccountType.LEGAL_ENTITY.value:
|
|
user.legal_entity = await self._unit_of_work.legal_entity_repository.get_by_user_id(user_id)
|
|
self._logger.info(f'User ID: {user.id}')
|
|
return user |