mirror of
https://github.com/datahub-project/datahub.git
synced 2025-10-18 12:27:15 +00:00
fix(graphql) Fix entity type filter clash with legacy filters (#10362)
This commit is contained in:
parent
8e5c0dc2d6
commit
1af050c730
@ -20,6 +20,7 @@ import com.linkedin.metadata.service.ViewService;
|
||||
import com.linkedin.view.DataHubViewInfo;
|
||||
import graphql.schema.DataFetcher;
|
||||
import graphql.schema.DataFetchingEnvironment;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
@ -68,15 +69,21 @@ public class AggregateAcrossEntitiesResolver
|
||||
final List<String> facets =
|
||||
input.getFacets() != null && input.getFacets().size() > 0 ? input.getFacets() : null;
|
||||
|
||||
List<String> finalEntities =
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.intersectEntityTypes(
|
||||
entityNames, maybeResolvedView.getDefinition().getEntityTypes())
|
||||
: entityNames;
|
||||
if (finalEntities.size() == 0) {
|
||||
return createEmptyAggregateResults();
|
||||
}
|
||||
|
||||
try {
|
||||
return mapAggregateResults(
|
||||
context,
|
||||
_entityClient.searchAcrossEntities(
|
||||
context.getOperationContext().withSearchFlags(flags -> searchFlags),
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.intersectEntityTypes(
|
||||
entityNames, maybeResolvedView.getDefinition().getEntityTypes())
|
||||
: entityNames,
|
||||
finalEntities,
|
||||
sanitizedQuery,
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.combineFilters(
|
||||
@ -112,4 +119,10 @@ public class AggregateAcrossEntitiesResolver
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
AggregateResults createEmptyAggregateResults() {
|
||||
final AggregateResults result = new AggregateResults();
|
||||
result.setFacets(new ArrayList<>());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -75,14 +75,20 @@ public class SearchAcrossEntitiesResolver implements DataFetcher<CompletableFutu
|
||||
start,
|
||||
count);
|
||||
|
||||
List<String> finalEntities =
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.intersectEntityTypes(
|
||||
entityNames, maybeResolvedView.getDefinition().getEntityTypes())
|
||||
: entityNames;
|
||||
if (finalEntities.size() == 0) {
|
||||
return SearchUtils.createEmptySearchResults(start, count);
|
||||
}
|
||||
|
||||
return UrnSearchResultsMapper.map(
|
||||
context,
|
||||
_entityClient.searchAcrossEntities(
|
||||
context.getOperationContext().withSearchFlags(flags -> searchFlags),
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.intersectEntityTypes(
|
||||
entityNames, maybeResolvedView.getDefinition().getEntityTypes())
|
||||
: entityNames,
|
||||
finalEntities,
|
||||
sanitizedQuery,
|
||||
maybeResolvedView != null
|
||||
? SearchUtils.combineFilters(
|
||||
|
@ -21,6 +21,7 @@ import com.linkedin.common.urn.Urn;
|
||||
import com.linkedin.datahub.graphql.QueryContext;
|
||||
import com.linkedin.datahub.graphql.generated.EntityType;
|
||||
import com.linkedin.datahub.graphql.generated.FacetFilterInput;
|
||||
import com.linkedin.datahub.graphql.generated.SearchResults;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.SearchFlagsInputMapper;
|
||||
import com.linkedin.datahub.graphql.types.entitytype.EntityTypeMapper;
|
||||
import com.linkedin.metadata.query.SearchFlags;
|
||||
@ -314,4 +315,15 @@ public class SearchUtils {
|
||||
(inputTypes == null || inputTypes.isEmpty()) ? SEARCHABLE_ENTITY_TYPES : inputTypes;
|
||||
return entityTypes.stream().map(EntityTypeMapper::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static SearchResults createEmptySearchResults(final int start, final int count) {
|
||||
final SearchResults result = new SearchResults();
|
||||
result.setStart(start);
|
||||
result.setCount(count);
|
||||
result.setTotal(0);
|
||||
result.setSearchResults(new ArrayList<>());
|
||||
result.setSuggestions(new ArrayList<>());
|
||||
result.setFacets(new ArrayList<>());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user