Coverage for bc/kwai-bc-identity/src/kwai_bc_identity/users/user_account_db_query.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module that implements the UserAccountQuery interface for a database.""" 

2 

3from typing import Self 

4 

5from kwai_core.db.database_query import DatabaseQuery 

6from kwai_core.domain.value_objects.email_address import EmailAddress 

7from kwai_core.domain.value_objects.unique_id import UniqueId 

8 

9from kwai_bc_identity.users.user_account import UserAccountIdentifier 

10from kwai_bc_identity.users.user_account_query import UserAccountQuery 

11from kwai_bc_identity.users.user_tables import UserAccountRow 

12 

13 

14class UserAccountDbQuery(UserAccountQuery, DatabaseQuery): 

15 """A user account query for a database.""" 

16 

17 def init(self): 

18 self._query.from_(UserAccountRow.__table_name__) 

19 

20 @property 

21 def columns(self): 

22 return UserAccountRow.get_aliases() 

23 

24 def filter_by_id(self, id_: UserAccountIdentifier) -> Self: 

25 self._query.and_where(UserAccountRow.field("id").eq(id_.value)) 

26 return self 

27 

28 def filter_by_email(self, email: EmailAddress) -> Self: 

29 self._query.and_where(UserAccountRow.field("email").eq(str(email))) 

30 return self 

31 

32 def filter_by_uuid(self, uuid: UniqueId) -> Self: 

33 self._query.and_where(UserAccountRow.field("uuid").eq(str(uuid))) 

34 return self