Coverage for bc/kwai-bc-training/src/kwai_bc_training/delete_team_from_training.py: 100%
19 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 for deleting a team from a training."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import Presenter
7from kwai_bc_training.teams.team import TeamIdentifier
8from kwai_bc_training.teams.team_repository import TeamRepository
9from kwai_bc_training.trainings.training import TrainingEntity, TrainingIdentifier
10from kwai_bc_training.trainings.training_repository import TrainingRepository
13@dataclass
14class DeleteTeamFromTrainingCommand:
15 """Input for the use case."""
17 training_id: int
18 team_id: int
21class DeleteTeamFromTraining:
22 """Use case for deleting a team from a training."""
24 def __init__(
25 self,
26 training_repo: TrainingRepository,
27 team_repo: TeamRepository,
28 presenter: Presenter[TrainingEntity],
29 ):
30 """Initialize the use case.
32 Attributes:
33 training_repo (TrainingRepository): the training repository
34 team_repo (TeamRepository): the team repository
35 presenter (Presenter[TrainingEntity]): A presenter for a training
36 """
37 self._training_repo = training_repo
38 self._team_repo = team_repo
39 self._presenter = presenter
41 async def execute(self, command: DeleteTeamFromTrainingCommand):
42 """Execute the use case.
44 Args:
45 command: the input for this use case.
47 Raises:
48 TrainingNotFoundException: Raised when the training with the given id does not exist.
49 TeamNotFoundException: Raised when the team with the given id does not exist.
50 """
51 training = await self._training_repo.get_by_id(
52 TrainingIdentifier(command.training_id)
53 )
54 team = await self._team_repo.get_by_id(TeamIdentifier(command.team_id))
56 training = training.delete_team(team)
57 await self._training_repo.update(training)
59 self._presenter.present(training)