Coverage for bc/kwai-bc-identity/src/kwai_bc_identity/update_user_invitation.py: 100%
20 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"""Module that defines the use case 'update a user invitation'."""
3from dataclasses import dataclass, replace
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 UpdateUserInvitationCommand:
16 """Class that defines the input for the use case 'update a user invitation'."""
18 uuid: str
19 revoked: bool = False
20 remark: str = ""
23class UpdateUserInvitation:
24 """Use case 'update a user invitation'."""
26 def __init__(
27 self,
28 user_invitation_repo: UserInvitationRepository,
29 presenter: Presenter[UserInvitationEntity],
30 ) -> None:
31 """Initialize the class."""
32 self._user_invitation_repo = user_invitation_repo
33 self._presenter = presenter
35 async def execute(self, command: UpdateUserInvitationCommand) -> None:
36 """Execute the use case."""
37 user_invitation = await self._user_invitation_repo.get_invitation_by_uuid(
38 UniqueId.create_from_string(command.uuid)
39 )
41 if command.revoked:
42 user_invitation = user_invitation.revoke()
44 user_invitation = replace(user_invitation, remark=command.remark)
46 await self._user_invitation_repo.update(user_invitation)
48 self._presenter.present(user_invitation)