Coverage for src/kwai/modules/identity/tokens/refresh_token_db_query.py: 100%
23 statements
« prev ^ index » next coverage.py v7.6.10, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2024-01-01 00:00 +0000
1"""Module that implements a refresh token query for a database."""
3from typing import Self
5from sql_smith.functions import on
7from kwai.core.db.database_query import DatabaseQuery
8from kwai.modules.identity.tokens.refresh_token_query import RefreshTokenQuery
9from kwai.modules.identity.tokens.token_identifier import TokenIdentifier
10from kwai.modules.identity.tokens.token_tables import (
11 AccessTokenRow,
12 RefreshTokenRow,
13)
14from kwai.modules.identity.users.user_account import UserAccountEntity
15from kwai.modules.identity.users.user_tables import UserAccountRow
18class RefreshTokenDbQuery(RefreshTokenQuery, DatabaseQuery):
19 """A refresh token query for a database."""
21 def init(self):
22 self._query.from_(RefreshTokenRow.__table_name__).join(
23 AccessTokenRow.__table_name__,
24 on(
25 RefreshTokenRow.column("access_token_id"),
26 AccessTokenRow.column("id"),
27 ),
28 ).join(
29 UserAccountRow.__table_name__,
30 on(AccessTokenRow.column("user_id"), UserAccountRow.column("id")),
31 )
33 @property
34 def columns(self):
35 return (
36 RefreshTokenRow.get_aliases()
37 + AccessTokenRow.get_aliases()
38 + UserAccountRow.get_aliases()
39 )
41 def filter_by_id(self, id_: int) -> Self:
42 self._query.and_where(RefreshTokenRow.field("id").eq(id_))
43 return self
45 def filter_by_token_identifier(self, identifier: TokenIdentifier) -> Self:
46 self._query.and_where(RefreshTokenRow.field("identifier").eq(str(identifier)))
47 return self
49 def filter_by_user_account(self, user_account: UserAccountEntity) -> Self:
50 self._query.and_where(UserAccountRow.field("id").eq(user_account.id.value))
51 return self