Coverage for bc/kwai-bc-portal/src/kwai_bc_portal/applications/application_db_query.py: 100%
25 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 an ApplicationQuery for a database."""
3from kwai_core.db.database_query import DatabaseQuery
5from kwai_bc_portal.applications.application_query import ApplicationQuery
6from kwai_bc_portal.applications.application_tables import ApplicationRow
7from kwai_bc_portal.domain.application import ApplicationIdentifier
10class ApplicationDbQuery(ApplicationQuery, DatabaseQuery):
11 """A database query for an application."""
13 def init(self):
14 return self._query.from_(ApplicationRow.__table_name__)
16 @property
17 def columns(self):
18 return ApplicationRow.get_aliases()
20 def filter_by_id(self, id_: ApplicationIdentifier) -> "ApplicationQuery":
21 self._query.and_where(ApplicationRow.field("id").eq(id_.value))
22 return self
24 def filter_by_name(self, name: str) -> "ApplicationQuery":
25 self._query.and_where(ApplicationRow.field("name").eq(name))
26 return self
28 def filter_only_news(self) -> "ApplicationQuery":
29 self._query.and_where(ApplicationRow.field("news").eq(True))
30 return self
32 def filter_only_pages(self) -> "ApplicationQuery":
33 self._query.and_where(ApplicationRow.field("pages").eq(True))
34 return self
36 def filter_only_events(self) -> "ApplicationQuery":
37 self._query.and_where(ApplicationRow.field("events").eq(True))
38 return self