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

1"""Module that implements an ApplicationQuery for a database.""" 

2 

3from kwai_core.db.database_query import DatabaseQuery 

4 

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 

8 

9 

10class ApplicationDbQuery(ApplicationQuery, DatabaseQuery): 

11 """A database query for an application.""" 

12 

13 def init(self): 

14 return self._query.from_(ApplicationRow.__table_name__) 

15 

16 @property 

17 def columns(self): 

18 return ApplicationRow.get_aliases() 

19 

20 def filter_by_id(self, id_: ApplicationIdentifier) -> "ApplicationQuery": 

21 self._query.and_where(ApplicationRow.field("id").eq(id_.value)) 

22 return self 

23 

24 def filter_by_name(self, name: str) -> "ApplicationQuery": 

25 self._query.and_where(ApplicationRow.field("name").eq(name)) 

26 return self 

27 

28 def filter_only_news(self) -> "ApplicationQuery": 

29 self._query.and_where(ApplicationRow.field("news").eq(True)) 

30 return self 

31 

32 def filter_only_pages(self) -> "ApplicationQuery": 

33 self._query.and_where(ApplicationRow.field("pages").eq(True)) 

34 return self 

35 

36 def filter_only_events(self) -> "ApplicationQuery": 

37 self._query.and_where(ApplicationRow.field("events").eq(True)) 

38 return self