Coverage for bc/kwai-bc-identity/src/kwai_bc_identity/get_user_invitation.py: 100%
13 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Implement the use case: get a user invitation."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import Presenter
6from kwai_core.domain.value_objects.unique_id import UniqueId
8from kwai_bc_identity.user_invitations.user_invitation import UserInvitationEntity
9from kwai_bc_identity.user_invitations.user_invitation_repository import (
10 UserInvitationRepository,
11)
14@dataclass(kw_only=True, frozen=True, slots=True)
15class GetUserInvitationCommand:
16 """Input for the use case.
18 [GetUserInvitation][kwai_bc_identity.get_user_invitation.GetUserInvitation]
20 Attributes:
21 uuid: The unique id of the user invitation.
22 """
24 uuid: str
27class GetUserInvitation:
28 """Implements the use case 'get a user invitation'."""
30 def __init__(
31 self,
32 user_invitation_repo: UserInvitationRepository,
33 presenter: Presenter[UserInvitationEntity],
34 ):
35 """Initialize the use case.
37 Args:
38 user_invitation_repo: A repository for getting the user invitation.
39 presenter: A presenter for a user invitation.
40 """
41 self._user_invitation_repo = user_invitation_repo
42 self._presenter = presenter
44 async def execute(self, command: GetUserInvitationCommand) -> None:
45 """Execute the use case.
47 Args:
48 command: The input for this use case.
50 Raises:
51 UserInvitationNotFoundException: Raised when then invitation is not found.
52 """
53 self._presenter.present(
54 await self._user_invitation_repo.get_invitation_by_uuid(
55 UniqueId.create_from_string(command.uuid)
56 )
57 )