Coverage for bc/kwai-bc-training/src/kwai_bc_training/delete_training_schedule.py: 100%
15 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 for the use case "Delete Training Schedule"."""
3from dataclasses import dataclass
5from kwai_bc_training.trainings.training_repository import TrainingRepository
6from kwai_bc_training.trainings.training_schedule import (
7 TrainingScheduleIdentifier,
8)
9from kwai_bc_training.trainings.training_schedule_repository import (
10 TrainingScheduleRepository,
11)
14@dataclass(kw_only=True, frozen=True, slots=True)
15class DeleteTrainingScheduleCommand:
16 """Input for the use case."""
18 id: int
19 delete_trainings: bool = False
22class DeleteTrainingSchedule:
23 """Use case "Delete Training Schedule".
25 When delete_trainings is True, Trainings that are related to this schedule,
26 will also be deleted. When False, the training will be updated.
27 """
29 def __init__(
30 self, repo: TrainingScheduleRepository, training_repo: TrainingRepository
31 ):
32 """Initialize the use case.
34 Args:
35 repo: A repository for deleting a training schedule.
36 training_repo: A repository for deleting or updating a training(s).
37 """
38 self._repo = repo
39 self._training_repo = training_repo
41 async def execute(self, command: DeleteTrainingScheduleCommand):
42 """Execute the use case.
44 Raises:
45 TrainingSchemaNotFoundException: when the training schedule does not exist.
46 """
47 training_schedule = await self._repo.get_by_id(
48 TrainingScheduleIdentifier(command.id)
49 )
51 await self._training_repo.reset_schedule(
52 training_schedule, command.delete_trainings
53 )
55 await self._repo.delete(training_schedule)