Coverage for bc/kwai-bc-training/src/kwai_bc_training/get_training_schedule.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module that defines the use case "Get Training Schedule".""" 

2 

3from dataclasses import dataclass 

4 

5from kwai_core.domain.presenter import Presenter 

6 

7from kwai_bc_training.trainings.training_schedule import ( 

8 TrainingScheduleEntity, 

9 TrainingScheduleIdentifier, 

10) 

11from kwai_bc_training.trainings.training_schedule_repository import ( 

12 TrainingScheduleRepository, 

13) 

14 

15 

16@dataclass(kw_only=True, frozen=True, slots=True) 

17class GetTrainingScheduleCommand: 

18 """Input for the use case.""" 

19 

20 id: int 

21 

22 

23class GetTrainingSchedule: 

24 """Use case for getting a training schedule.""" 

25 

26 def __init__( 

27 self, 

28 repo: TrainingScheduleRepository, 

29 presenter: Presenter[TrainingScheduleEntity], 

30 ): 

31 """Initialize the use case. 

32 

33 Args: 

34 repo: A repository for getting the training schedule. 

35 presenter: A presenter for presenting the result of the use case. 

36 """ 

37 self._repo = repo 

38 self._presenter = presenter 

39 

40 async def execute(self, command: GetTrainingScheduleCommand) -> None: 

41 """Execute the use case. 

42 

43 Args: 

44 command: The input for this use case. 

45 

46 Raises: 

47 TrainingScheduleNotFoundException: raised when the training schedule does not exist. 

48 """ 

49 self._presenter.present( 

50 await self._repo.get_by_id(TrainingScheduleIdentifier(command.id)) 

51 )