private void doSearch(boolean searchByTask, SearchPb.Request req, StreamObserver<WorkflowServicePb.WorkflowSummarySearchResult> response) {
final int start = req.getStart();
final int size = GRPC_HELPER.optionalOr(req.getSize(), maxSearchSize);
final List<String> sort = convertSort(req.getSort());
final String freeText = GRPC_HELPER.optionalOr(req.getFreeText(), "*");
final String query = req.getQuery();
if (size > maxSearchSize) {
response.onError(
Status.INVALID_ARGUMENT
.withDescription("Cannot return more than "+maxSearchSize+" results")
.asRuntimeException()
);
return;
}
SearchResult<WorkflowSummary> search;
if (searchByTask) {
search = workflowService.searchWorkflowsByTasks(start, size, sort, freeText,query);
} else {
search = workflowService.searchWorkflows(start, size, sort, freeText, query);
}
response.onNext(
WorkflowServicePb.WorkflowSummarySearchResult.newBuilder()
.setTotalHits(search.getTotalHits())
.addAllResults(
search.getResults().stream().map(PROTO_MAPPER::toProto)::iterator
).build()
);
response.onCompleted();
}