Skip to content

Commit 976fecd

Browse files
fix(ui) Support glossary nodes in autocomplete (#12858)
1 parent 95205a0 commit 976fecd

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/glossary/GlossaryNodeType.java

+49-1
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,22 @@
1111
import com.linkedin.common.urn.Urn;
1212
import com.linkedin.common.urn.UrnUtils;
1313
import com.linkedin.datahub.graphql.QueryContext;
14+
import com.linkedin.datahub.graphql.generated.AutoCompleteResults;
1415
import com.linkedin.datahub.graphql.generated.Entity;
1516
import com.linkedin.datahub.graphql.generated.EntityType;
17+
import com.linkedin.datahub.graphql.generated.FacetFilterInput;
1618
import com.linkedin.datahub.graphql.generated.GlossaryNode;
19+
import com.linkedin.datahub.graphql.generated.SearchResults;
20+
import com.linkedin.datahub.graphql.resolvers.ResolverUtils;
21+
import com.linkedin.datahub.graphql.types.SearchableEntityType;
1722
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryNodeMapper;
23+
import com.linkedin.datahub.graphql.types.mappers.AutoCompleteResultsMapper;
24+
import com.linkedin.datahub.graphql.types.mappers.UrnSearchResultsMapper;
1825
import com.linkedin.entity.EntityResponse;
1926
import com.linkedin.entity.client.EntityClient;
27+
import com.linkedin.metadata.query.AutoCompleteResult;
28+
import com.linkedin.metadata.query.filter.Filter;
29+
import com.linkedin.metadata.search.SearchResult;
2030
import graphql.execution.DataFetcherResult;
2131
import java.util.ArrayList;
2232
import java.util.HashSet;
@@ -25,9 +35,12 @@
2535
import java.util.Set;
2636
import java.util.function.Function;
2737
import java.util.stream.Collectors;
38+
import javax.annotation.Nonnull;
39+
import javax.annotation.Nullable;
2840

2941
public class GlossaryNodeType
30-
implements com.linkedin.datahub.graphql.types.EntityType<GlossaryNode, String> {
42+
implements SearchableEntityType<GlossaryNode, String>,
43+
com.linkedin.datahub.graphql.types.EntityType<GlossaryNode, String> {
3144

3245
static final Set<String> ASPECTS_TO_RESOLVE =
3346
ImmutableSet.of(
@@ -89,4 +102,39 @@ public List<DataFetcherResult<GlossaryNode>> batchLoad(
89102
throw new RuntimeException("Failed to batch load GlossaryNodes", e);
90103
}
91104
}
105+
106+
@Override
107+
public SearchResults search(
108+
@Nonnull String query,
109+
@Nullable List<FacetFilterInput> filters,
110+
int start,
111+
int count,
112+
@Nonnull final QueryContext context)
113+
throws Exception {
114+
final Map<String, String> facetFilters =
115+
ResolverUtils.buildFacetFilters(filters, ImmutableSet.of());
116+
final SearchResult searchResult =
117+
_entityClient.search(
118+
context.getOperationContext().withSearchFlags(flags -> flags.setFulltext(true)),
119+
GLOSSARY_NODE_ENTITY_NAME,
120+
query,
121+
facetFilters,
122+
start,
123+
count);
124+
return UrnSearchResultsMapper.map(context, searchResult);
125+
}
126+
127+
@Override
128+
public AutoCompleteResults autoComplete(
129+
@Nonnull String query,
130+
@Nullable String field,
131+
@Nullable Filter filters,
132+
int limit,
133+
@Nonnull final QueryContext context)
134+
throws Exception {
135+
final AutoCompleteResult result =
136+
_entityClient.autoComplete(
137+
context.getOperationContext(), GLOSSARY_NODE_ENTITY_NAME, query, filters, limit);
138+
return AutoCompleteResultsMapper.map(context, result);
139+
}
92140
}

0 commit comments

Comments
 (0)