File size: 2,385 Bytes
b4f2238 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | """当事人查询服务组合。"""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from django.contrib.auth.models import AbstractBaseUser as User
from django.db.models import QuerySet
from apps.client.models import Client
from .query import ClientBatchQueryService, ClientGetQueryService, ClientListQueryService
class ClientQueryService:
def __init__(
self,
list_query: ClientListQueryService | None = None,
get_query: ClientGetQueryService | None = None,
batch_query: ClientBatchQueryService | None = None,
) -> None:
self._list_query = list_query
self._get_query = get_query
self._batch_query = batch_query
@property
def list_query(self) -> ClientListQueryService:
if self._list_query is None:
from .query import ClientListQueryService
self._list_query = ClientListQueryService()
return self._list_query
@property
def get_query(self) -> ClientGetQueryService:
if self._get_query is None:
from .query import ClientGetQueryService
self._get_query = ClientGetQueryService()
return self._get_query
@property
def batch_query(self) -> ClientBatchQueryService:
if self._batch_query is None:
from .query import ClientBatchQueryService
self._batch_query = ClientBatchQueryService()
return self._batch_query
def list_clients(
self,
*,
page: int = 1,
page_size: int = 20,
max_page_size: int = 100,
client_type: str | None = None,
is_our_client: bool | None = None,
search: str | None = None,
user: User | None = None,
) -> QuerySet[Client, Client]:
return self.list_query.list_clients(
page=page,
page_size=page_size,
max_page_size=max_page_size,
client_type=client_type,
is_our_client=is_our_client,
search=search,
user=user,
)
def get_client(self, *, client_id: int, user: User | None = None) -> Client:
return self.get_query.get_client(client_id=client_id, user=user)
def get_clients_by_ids(self, *, client_ids: list[int]) -> list[Client]:
return self.batch_query.get_clients_by_ids(client_ids=client_ids)
|