fix(dataProduct) Show entity count excluding soft deleted entities (#8444)

Co-authored-by: Joshua Eilers <eilers.joshua@gmail.com>
This commit is contained in:
Chris Collins 2023-07-26 10:56:40 -04:00 committed by GitHub
parent 4f961dab2a
commit 7bbeedddc4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 6 deletions

View File

@ -645,6 +645,7 @@ public class GmsGraphQLEngine {
configureOrganisationRoleResolvers(builder);
configureGlossaryNodeResolvers(builder);
configureDomainResolvers(builder);
configureDataProductResolvers(builder);
configureAssertionResolvers(builder);
configurePolicyResolvers(builder);
configureDataProcessInstanceResolvers(builder);
@ -1679,6 +1680,13 @@ public class GmsGraphQLEngine {
);
}
private void configureDataProductResolvers(final RuntimeWiring.Builder builder) {
builder.type("DataProduct", typeWiring -> typeWiring
.dataFetcher("entities", new ListDataProductAssetsResolver(this.entityClient))
.dataFetcher("relationships", new EntityRelationshipsResultResolver(graphClient))
);
}
private void configureAssertionResolvers(final RuntimeWiring.Builder builder) {
builder.type("Assertion", typeWiring -> typeWiring.dataFetcher("relationships",
new EntityRelationshipsResultResolver(graphClient))

View File

@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn;
import com.linkedin.common.urn.UrnUtils;
import com.linkedin.data.DataMap;
import com.linkedin.datahub.graphql.QueryContext;
import com.linkedin.datahub.graphql.generated.DataProduct;
import com.linkedin.datahub.graphql.generated.EntityType;
import com.linkedin.datahub.graphql.generated.SearchAcrossEntitiesInput;
import com.linkedin.datahub.graphql.generated.SearchResults;
@ -50,7 +51,9 @@ public class ListDataProductAssetsResolver implements DataFetcher<CompletableFut
@Override
public CompletableFuture<SearchResults> get(DataFetchingEnvironment environment) {
final QueryContext context = environment.getContext();
final Urn dataProductUrn = UrnUtils.getUrn(environment.getArgument("urn"));
// get urn from either input or source (in the case of "entities" field)
final String urn = environment.getArgument("urn") != null ? environment.getArgument("urn") : ((DataProduct) environment.getSource()).getUrn();
final Urn dataProductUrn = UrnUtils.getUrn(urn);
final SearchAcrossEntitiesInput input =
bindArgument(environment.getArgument("input"), SearchAcrossEntitiesInput.class);

View File

@ -10890,6 +10890,11 @@ type DataProduct implements Entity {
"""
relationships(input: RelationshipsInput!): EntityRelationshipsResult
"""
Children entities inside of the DataProduct
"""
entities(input: SearchAcrossEntitiesInput): SearchResults
"""
The structured glossary terms associated with the Data Product
"""
@ -10926,7 +10931,7 @@ type DataProductProperties {
externalUrl: String
"""
Number of children entities inside of the Data Product
Number of children entities inside of the Data Product. This number includes soft deleted entities.
"""
numAssets: Int

View File

@ -132,7 +132,7 @@ export class DataProductEntity implements Entity<DataProduct> {
globalTags={data.tags}
glossaryTerms={data.glossaryTerms}
domain={data.domain?.domain}
entityCount={data?.properties?.numAssets || undefined}
entityCount={data?.entities?.total || undefined}
externalUrl={data.properties?.externalUrl}
/>
);
@ -149,7 +149,7 @@ export class DataProductEntity implements Entity<DataProduct> {
globalTags={data.tags}
glossaryTerms={data.glossaryTerms}
domain={data.domain?.domain}
entityCount={data?.properties?.numAssets || undefined}
entityCount={data?.entities?.total || undefined}
externalUrl={data.properties?.externalUrl}
/>
);
@ -162,7 +162,7 @@ export class DataProductEntity implements Entity<DataProduct> {
getOverridePropertiesFromEntity = (data: DataProduct) => {
const name = data?.properties?.name;
const externalUrl = data?.properties?.externalUrl;
const entityCount = data?.properties?.numAssets || undefined;
const entityCount = data?.entities?.total || undefined;
return {
name,
externalUrl,

View File

@ -24,7 +24,6 @@ fragment dataProductSearchFields on DataProduct {
name
description
externalUrl
numAssets
}
ownership {
...ownershipFields
@ -38,6 +37,9 @@ fragment dataProductSearchFields on DataProduct {
domain {
...entityDomain
}
entities(input: { start: 0, count: 0, query: "*" }) {
total
}
}
mutation createDataProduct($input: CreateDataProductInput!) {