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
« 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"."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import Presenter
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)
16@dataclass(kw_only=True, frozen=True, slots=True)
17class GetTrainingScheduleCommand:
18 """Input for the use case."""
20 id: int
23class GetTrainingSchedule:
24 """Use case for getting a training schedule."""
26 def __init__(
27 self,
28 repo: TrainingScheduleRepository,
29 presenter: Presenter[TrainingScheduleEntity],
30 ):
31 """Initialize the use case.
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
40 async def execute(self, command: GetTrainingScheduleCommand) -> None:
41 """Execute the use case.
43 Args:
44 command: The input for this use case.
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 )