Coverage for bc/kwai-bc-training/src/kwai_bc_training/teams/team_db_repository.py: 100%
26 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 a team repository for a database."""
3from typing import AsyncIterator
5from kwai_core.db.database import Database
7from kwai_bc_training.teams.team import TeamEntity, TeamIdentifier
8from kwai_bc_training.teams.team_db_query import TeamDbQuery
9from kwai_bc_training.teams.team_query import TeamQuery
10from kwai_bc_training.teams.team_repository import TeamRepository
11from kwai_bc_training.teams.team_tables import TeamRow
14class TeamDbRepository(TeamRepository):
15 """A team repository for a database."""
17 def __init__(self, database: Database):
18 """Initialize the repository.
20 Args:
21 database: The database for this repository.
22 """
23 self._database = database
25 def create_query(self) -> TeamQuery:
26 """Create the team query."""
27 return TeamDbQuery(self._database)
29 async def get_by_id(self, id: TeamIdentifier) -> TeamEntity:
30 query = self.create_query()
31 query.filter_by_id(id)
33 row = await query.fetch_one()
35 return TeamRow.map(row).create_entity()
37 async def get_all(self) -> AsyncIterator[TeamEntity]:
38 query = self.create_query()
39 async for row in query.fetch():
40 yield TeamRow.map(row).create_entity()
42 async def get_by_ids(self, *ids: TeamIdentifier) -> AsyncIterator[TeamEntity]:
43 query = self.create_query()
44 query.filter_by_ids(*ids)
46 async for row in query.fetch():
47 yield TeamRow.map(row).create_entity()