Coverage for bc/kwai-bc-teams/src/kwai_bc_teams/get_teams.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 that implements the use case 'Get Teams'."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import AsyncPresenter, IterableResult
7from kwai_bc_teams.domain.team import TeamEntity
8from kwai_bc_teams.repositories.team_repository import TeamRepository
11@dataclass(kw_only=True, frozen=True, slots=True)
12class GetTeamsCommand:
13 """Input for the use case 'Get Teams'."""
15 offset: int | None = None
16 limit: int | None = None
19class GetTeams:
20 """Implement the use case 'Get Teams'."""
22 def __init__(
23 self,
24 team_repo: TeamRepository,
25 presenter: AsyncPresenter[IterableResult[TeamEntity]],
26 ):
27 """Initialize the use case."""
28 self._team_repo = team_repo
29 self._presenter = presenter
31 async def execute(self, command: GetTeamsCommand) -> None:
32 """Execute the use case."""
33 query = self._team_repo.create_query()
34 await self._presenter.present(
35 IterableResult(
36 count=await query.count(),
37 limit=command.limit,
38 offset=command.offset,
39 iterator=self._team_repo.get_all(query, command.offset, command.limit),
40 )
41 )