mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-17 11:53:06 +00:00
fix(filters) Fix autocomplete for platforms and improve advanced search builder (#12560)
This commit is contained in:
parent
8dfd8fbbaf
commit
610e5a899e
@ -2,15 +2,26 @@ package com.linkedin.datahub.graphql.types.dataplatform;
|
||||
|
||||
import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
import com.linkedin.common.urn.UrnUtils;
|
||||
import com.linkedin.datahub.graphql.QueryContext;
|
||||
import com.linkedin.datahub.graphql.generated.AutoCompleteResults;
|
||||
import com.linkedin.datahub.graphql.generated.DataPlatform;
|
||||
import com.linkedin.datahub.graphql.generated.Entity;
|
||||
import com.linkedin.datahub.graphql.generated.FacetFilterInput;
|
||||
import com.linkedin.datahub.graphql.generated.SearchResults;
|
||||
import com.linkedin.datahub.graphql.resolvers.ResolverUtils;
|
||||
import com.linkedin.datahub.graphql.types.EntityType;
|
||||
import com.linkedin.datahub.graphql.types.SearchableEntityType;
|
||||
import com.linkedin.datahub.graphql.types.dataplatform.mappers.DataPlatformMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.AutoCompleteResultsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.UrnSearchResultsMapper;
|
||||
import com.linkedin.entity.EntityResponse;
|
||||
import com.linkedin.entity.client.EntityClient;
|
||||
import com.linkedin.metadata.query.AutoCompleteResult;
|
||||
import com.linkedin.metadata.query.filter.Filter;
|
||||
import com.linkedin.metadata.search.SearchResult;
|
||||
import graphql.execution.DataFetcherResult;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
@ -18,8 +29,11 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class DataPlatformType implements EntityType<DataPlatform, String> {
|
||||
public class DataPlatformType
|
||||
implements SearchableEntityType<DataPlatform, String>, EntityType<DataPlatform, String> {
|
||||
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
@ -75,4 +89,39 @@ public class DataPlatformType implements EntityType<DataPlatform, String> {
|
||||
public Function<Entity, String> getKeyProvider() {
|
||||
return Entity::getUrn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchResults search(
|
||||
@Nonnull String query,
|
||||
@Nullable List<FacetFilterInput> filters,
|
||||
int start,
|
||||
int count,
|
||||
@Nonnull final QueryContext context)
|
||||
throws Exception {
|
||||
final Map<String, String> facetFilters =
|
||||
ResolverUtils.buildFacetFilters(filters, ImmutableSet.of());
|
||||
final SearchResult searchResult =
|
||||
_entityClient.search(
|
||||
context.getOperationContext().withSearchFlags(flags -> flags.setFulltext(true)),
|
||||
DATA_PLATFORM_ENTITY_NAME,
|
||||
query,
|
||||
facetFilters,
|
||||
start,
|
||||
count);
|
||||
return UrnSearchResultsMapper.map(context, searchResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AutoCompleteResults autoComplete(
|
||||
@Nonnull String query,
|
||||
@Nullable String field,
|
||||
@Nullable Filter filters,
|
||||
int limit,
|
||||
@Nonnull final QueryContext context)
|
||||
throws Exception {
|
||||
final AutoCompleteResult result =
|
||||
_entityClient.autoComplete(
|
||||
context.getOperationContext(), DATA_PLATFORM_ENTITY_NAME, query, filters, limit);
|
||||
return AutoCompleteResultsMapper.map(context, result);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user