the-superpirate 43be16e4bc - [nexus] Update schema
- [nexus] Remove outdated protos
  - [nexus] Development
  - [nexus] Development
  - [nexus] Development
  - [nexus] Development
  - [nexus] Development
  - [nexus] Refactor views
  - [nexus] Update aiosumma
  - [nexus] Add tags
  - [nexus] Development
  - [nexus] Update repository
  - [nexus] Update repository
  - [nexus] Update dependencies
  - [nexus] Update dependencies
  - [nexus] Fixes for MetaAPI
  - [nexus] Support for new queries
  - [nexus] Adopt new versions of search
  - [nexus] Improving Nexus
  - [nexus] Various fixes
  - [nexus] Add profile
  - [nexus] Fixes for ingestion
  - [nexus] Refactorings and bugfixes
  - [idm] Add profile methods
  - [nexus] Fix stalled nexus-meta bugs
  - [nexus] Various bugfixes
  - [nexus] Restore IDM API functionality

GitOrigin-RevId: a0842345a6dde5b321279ab5510a50c0def0e71a
2022-09-02 19:15:47 +03:00

140 lines
4.2 KiB
Python

from typing import (
Dict,
List,
Optional,
Tuple,
Union,
)
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
class MetaApiGrpcClient(BaseGrpcClient):
stub_clses = {
'documents': documents_service_pb2_grpc.DocumentsStub,
'search': search_service_pb2_grpc.SearchStub,
}
@expose
async def get(
self,
index_alias: str,
document_id: int,
mode: str,
user_id: str,
position: Optional[int] = None,
request_id: Optional[str] = None,
session_id: Optional[str] = None,
) -> typed_document_pb2.TypedDocument:
return await self.stubs['documents'].get(
documents_service_pb2.TypedDocumentRequest(
index_alias=index_alias,
document_id=document_id,
mode=mode,
position=position,
),
metadata=(
('request-id', request_id),
('session-id', session_id),
('user-id', user_id),
),
)
@expose(with_from_file=True)
async def search(
self,
index_aliases: Union[List[str], Tuple[str]],
query: str,
user_id: str,
page: Optional[int] = None,
page_size: Optional[int] = None,
language: Optional[str] = None,
request_id: Optional[str] = None,
session_id: Optional[str] = None,
) -> 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,
language=language,
),
metadata=(
('request-id', request_id),
('session-id', session_id),
('user-id', user_id),
),
)
@expose(with_from_file=True)
async def search(
self,
index_aliases: Union[List[str], Tuple[str]],
query: str,
user_id: str,
query_tags: Optional[List] = None,
page: Optional[int] = None,
page_size: Optional[int] = None,
language: Optional[str] = None,
request_id: Optional[str] = None,
session_id: Optional[str] = None,
) -> search_service_pb2.SearchResponse:
return await self.stubs['search'].search(
search_service_pb2.SearchRequest(
index_aliases=index_aliases,
query=query,
query_tags=query_tags,
page=page,
page_size=page_size,
language=language,
),
metadata=(
('request-id', request_id),
('session-id', session_id),
('user-id', user_id),
),
)
@expose(with_from_file=True)
async def meta_search(
self,
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,
request_id: Optional[str] = None,
session_id: Optional[str] = None,
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()),
metadata=(
('request-id', request_id),
('session-id', session_id),
('user-id', user_id),
('skip-cache-loading', str(int(skip_cache_loading))),
('skip-cache-saving', str(int(skip_cache_saving))),
),
)