2021-04-09 11:17:38 +03:00
|
|
|
from typing import (
|
2022-09-02 18:44:56 +03:00
|
|
|
Dict,
|
2021-04-09 11:17:38 +03:00
|
|
|
List,
|
|
|
|
Optional,
|
|
|
|
Tuple,
|
|
|
|
Union,
|
|
|
|
)
|
|
|
|
|
2022-09-02 18:44:56 +03:00
|
|
|
from aiogrpcclient import (
|
|
|
|
BaseGrpcClient,
|
|
|
|
expose,
|
|
|
|
)
|
|
|
|
from izihawa_utils.pb_to_json import ParseDict
|
|
|
|
from nexus.meta_api.proto import (
|
|
|
|
documents_service_pb2,
|
|
|
|
documents_service_pb2_grpc,
|
|
|
|
search_service_pb2,
|
|
|
|
search_service_pb2_grpc,
|
|
|
|
)
|
|
|
|
from nexus.models.proto import typed_document_pb2
|
2021-04-09 11:17:38 +03:00
|
|
|
|
|
|
|
|
2021-04-15 17:14:54 +03:00
|
|
|
class MetaApiGrpcClient(BaseGrpcClient):
|
|
|
|
stub_clses = {
|
2022-09-02 18:44:56 +03:00
|
|
|
'documents': documents_service_pb2_grpc.DocumentsStub,
|
|
|
|
'search': search_service_pb2_grpc.SearchStub,
|
2021-04-15 17:14:54 +03:00
|
|
|
}
|
2021-04-09 11:17:38 +03:00
|
|
|
|
2022-09-02 18:44:56 +03:00
|
|
|
@expose
|
2021-04-09 11:17:38 +03:00
|
|
|
async def get(
|
|
|
|
self,
|
2022-03-28 17:39:36 +03:00
|
|
|
index_alias: str,
|
2021-04-09 11:17:38 +03:00
|
|
|
document_id: int,
|
2022-09-02 18:44:56 +03:00
|
|
|
mode: str,
|
2021-05-01 12:10:45 +03:00
|
|
|
user_id: str,
|
2021-04-09 11:17:38 +03:00
|
|
|
position: Optional[int] = None,
|
|
|
|
request_id: Optional[str] = None,
|
|
|
|
session_id: Optional[str] = None,
|
2022-09-02 18:44:56 +03:00
|
|
|
) -> typed_document_pb2.TypedDocument:
|
2021-04-15 17:14:54 +03:00
|
|
|
return await self.stubs['documents'].get(
|
2022-09-02 18:44:56 +03:00
|
|
|
documents_service_pb2.TypedDocumentRequest(
|
2022-03-28 17:39:36 +03:00
|
|
|
index_alias=index_alias,
|
2021-04-09 11:17:38 +03:00
|
|
|
document_id=document_id,
|
2022-09-02 18:44:56 +03:00
|
|
|
mode=mode,
|
2021-04-09 11:17:38 +03:00
|
|
|
position=position,
|
|
|
|
),
|
|
|
|
metadata=(
|
|
|
|
('request-id', request_id),
|
2021-05-01 12:10:45 +03:00
|
|
|
('session-id', session_id),
|
|
|
|
('user-id', user_id),
|
2021-04-09 11:17:38 +03:00
|
|
|
),
|
|
|
|
)
|
|
|
|
|
2022-09-02 18:44:56 +03:00
|
|
|
@expose(with_from_file=True)
|
|
|
|
async def search(
|
2021-04-09 11:17:38 +03:00
|
|
|
self,
|
2022-09-02 18:44:56 +03:00
|
|
|
index_aliases: Union[List[str], Tuple[str]],
|
|
|
|
query: str,
|
2021-05-01 12:10:45 +03:00
|
|
|
user_id: str,
|
2022-09-02 18:44:56 +03:00
|
|
|
page: Optional[int] = None,
|
|
|
|
page_size: Optional[int] = None,
|
2021-04-09 11:17:38 +03:00
|
|
|
language: Optional[str] = None,
|
|
|
|
request_id: Optional[str] = None,
|
|
|
|
session_id: Optional[str] = None,
|
2022-09-02 18:44:56 +03:00
|
|
|
) -> search_service_pb2.SearchResponse:
|
|
|
|
return await self.stubs['search'].search(
|
|
|
|
search_service_pb2.SearchRequest(
|
|
|
|
index_aliases=index_aliases,
|
|
|
|
query=query,
|
|
|
|
page=page,
|
|
|
|
page_size=page_size,
|
2021-04-09 11:17:38 +03:00
|
|
|
language=language,
|
|
|
|
),
|
|
|
|
metadata=(
|
|
|
|
('request-id', request_id),
|
2021-05-01 12:10:45 +03:00
|
|
|
('session-id', session_id),
|
|
|
|
('user-id', user_id),
|
2021-04-09 11:17:38 +03:00
|
|
|
),
|
|
|
|
)
|
|
|
|
|
2022-09-02 18:44:56 +03:00
|
|
|
@expose(with_from_file=True)
|
2021-04-09 11:17:38 +03:00
|
|
|
async def search(
|
|
|
|
self,
|
2022-03-28 17:39:36 +03:00
|
|
|
index_aliases: Union[List[str], Tuple[str]],
|
2021-04-09 11:17:38 +03:00
|
|
|
query: str,
|
2021-05-01 12:10:45 +03:00
|
|
|
user_id: str,
|
2022-09-02 18:44:56 +03:00
|
|
|
query_tags: Optional[List] = None,
|
2021-04-09 11:17:38 +03:00
|
|
|
page: Optional[int] = None,
|
|
|
|
page_size: Optional[int] = None,
|
|
|
|
language: Optional[str] = None,
|
|
|
|
request_id: Optional[str] = None,
|
|
|
|
session_id: Optional[str] = None,
|
2022-09-02 18:44:56 +03:00
|
|
|
) -> search_service_pb2.SearchResponse:
|
2021-04-15 17:14:54 +03:00
|
|
|
return await self.stubs['search'].search(
|
2022-09-02 18:44:56 +03:00
|
|
|
search_service_pb2.SearchRequest(
|
2022-03-28 17:39:36 +03:00
|
|
|
index_aliases=index_aliases,
|
2021-04-09 11:17:38 +03:00
|
|
|
query=query,
|
2022-09-02 18:44:56 +03:00
|
|
|
query_tags=query_tags,
|
2021-04-09 11:17:38 +03:00
|
|
|
page=page,
|
|
|
|
page_size=page_size,
|
|
|
|
language=language,
|
|
|
|
),
|
|
|
|
metadata=(
|
|
|
|
('request-id', request_id),
|
2021-05-01 12:10:45 +03:00
|
|
|
('session-id', session_id),
|
|
|
|
('user-id', user_id),
|
2021-04-09 11:17:38 +03:00
|
|
|
),
|
|
|
|
)
|
2021-04-13 17:23:31 +03:00
|
|
|
|
2022-09-02 18:44:56 +03:00
|
|
|
@expose(with_from_file=True)
|
|
|
|
async def meta_search(
|
2021-04-13 17:23:31 +03:00
|
|
|
self,
|
2022-09-02 18:44:56 +03:00
|
|
|
index_aliases: Union[List[str], Tuple[str]],
|
|
|
|
query: str,
|
|
|
|
collectors: List,
|
|
|
|
languages: Optional[Dict[str, float]] = None,
|
|
|
|
query_tags: Optional[List] = None,
|
|
|
|
user_id: Optional[str] = None,
|
2021-04-13 17:23:31 +03:00
|
|
|
request_id: Optional[str] = None,
|
|
|
|
session_id: Optional[str] = None,
|
2022-09-02 18:44:56 +03:00
|
|
|
skip_cache_loading: Optional[bool] = False,
|
|
|
|
skip_cache_saving: Optional[bool] = False,
|
|
|
|
) -> search_service_pb2.MetaSearchResponse:
|
|
|
|
return await self.stubs['search'].meta_search(
|
|
|
|
ParseDict({
|
|
|
|
'index_aliases': index_aliases,
|
|
|
|
'query': query,
|
|
|
|
'languages': languages,
|
|
|
|
'collectors': collectors,
|
|
|
|
'query_tags': query_tags,
|
|
|
|
}, search_service_pb2.MetaSearchRequest()),
|
2021-04-13 17:23:31 +03:00
|
|
|
metadata=(
|
|
|
|
('request-id', request_id),
|
2021-05-01 12:10:45 +03:00
|
|
|
('session-id', session_id),
|
|
|
|
('user-id', user_id),
|
2022-09-02 18:44:56 +03:00
|
|
|
('skip-cache-loading', str(int(skip_cache_loading))),
|
|
|
|
('skip-cache-saving', str(int(skip_cache_saving))),
|
2021-04-13 17:23:31 +03:00
|
|
|
),
|
|
|
|
)
|