refactor: users/search のコードを修正

feat/v13/notes
yupix 11 months ago
parent e402026240
commit b6a2caf015
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -13,6 +13,8 @@ from mipac.models.user import (
MeDetailed, MeDetailed,
MeDetailedModerator, MeDetailedModerator,
UserDetailed, UserDetailed,
UserDetailedModels,
UserModels,
create_user_model, create_user_model,
) )
from mipac.types.clip import IClip from mipac.types.clip import IClip
@ -27,7 +29,7 @@ from mipac.types.user import (
) )
from mipac.utils.cache import cache from mipac.utils.cache import cache
from mipac.utils.format import remove_dict_empty from mipac.utils.format import remove_dict_empty
from mipac.utils.pagination import Pagination, pagination_iterator from mipac.utils.pagination import Pagination
from mipac.utils.util import check_multi_arg from mipac.utils.util import check_multi_arg
if TYPE_CHECKING: if TYPE_CHECKING:
@ -239,7 +241,7 @@ class UserActions:
detail: Literal[True] = True, detail: Literal[True] = True,
*, *,
get_all: bool = False, get_all: bool = False,
) -> AsyncGenerator[UserDetailed, None]: ) -> AsyncGenerator[UserDetailedModels, None]:
... ...
async def search( async def search(
@ -251,7 +253,7 @@ class UserActions:
detail: Literal[True, False] = True, detail: Literal[True, False] = True,
*, *,
get_all: bool = False, get_all: bool = False,
) -> AsyncGenerator[UserDetailed | PartialUser, None]: ) -> AsyncGenerator[UserModels, None]:
""" """
Search users by keyword. Search users by keyword.
@ -286,29 +288,19 @@ class UserActions:
{"query": query, "limit": limit, "offset": offset, "origin": origin, "detail": detail} {"query": query, "limit": limit, "offset": offset, "origin": origin, "detail": detail}
) )
if detail: pagination = Pagination[IUser](
pagination = Pagination[IUserDetailed]( self.__session,
self.__session, Route("POST", "/api/users/search"),
Route("POST", "/api/users/search"), json=body,
json=body, pagination_type="count",
pagination_type="count", )
)
iterator = pagination_iterator( while True:
pagination, get_all, model=UserDetailed, client=self.__client users: list[IUser] = await pagination.next()
) for user in users:
else: yield create_user_model(user, client=self.__client)
pagination = Pagination[IPartialUser]( if get_all is False or pagination.is_final:
self.__session, break
Route("POST", "/api/users/search"),
json=body,
pagination_type="count",
)
iterator = pagination_iterator(
pagination, get_all=get_all, model=PartialUser, client=self.__client
)
async for user in iterator:
yield user
async def search_by_username_and_host( async def search_by_username_and_host(
self, self,

Loading…
Cancel
Save