diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java index 6c58d269502..b7766f20392 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java @@ -934,6 +934,13 @@ public abstract class EntityRepository { } } + @SuppressWarnings("unused") + protected void postUpdate(T updated) { + if (supportsSearch) { + searchRepository.updateEntity(updated); + } + } + @Transaction public final PutResponse update(UriInfo uriInfo, T original, T updated) { // Get all the fields in the original entity that can be updated during PUT operation diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TeamRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TeamRepository.java index ee6b3856915..e490c77a91d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TeamRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TeamRepository.java @@ -797,6 +797,8 @@ public class TeamRepository extends EntityRepository { origUsers, updatedUsers, false); + + updatedTeam.setUserCount(updatedUsers.size()); } private void updateDefaultRoles(Team origTeam, Team updatedTeam) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java index 77ecc8bf693..2647cb97aae 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java @@ -36,6 +36,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.UUID; import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.UriInfo; import lombok.extern.slf4j.Slf4j; @@ -43,6 +44,7 @@ import org.apache.commons.csv.CSVPrinter; import org.apache.commons.csv.CSVRecord; import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.csv.EntityCsv; +import org.openmetadata.schema.EntityInterface; import org.openmetadata.schema.api.teams.CreateTeam.TeamType; import org.openmetadata.schema.api.teams.CreateUser; import org.openmetadata.schema.entity.teams.AuthenticationMechanism; @@ -709,6 +711,14 @@ public class UserRepository extends EntityRepository { List deleted = new ArrayList<>(); recordListChange( TEAMS_FIELD, origTeams, updatedTeams, added, deleted, EntityUtil.entityReferenceMatch); + + // Update users and userCount in team search index + Stream.concat(added.stream(), deleted.stream()) + .forEach( + teamRef -> { + EntityInterface team = Entity.getEntity(teamRef, "id,userCount", Include.ALL); + searchRepository.updateEntity(team); + }); } private void updatePersonas(User original, User updated) { diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json index df7ed64a054..3044d75f6b5 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/team_index_mapping.json @@ -192,6 +192,9 @@ } } }, + "userCount" : { + "type" : "long" + }, "parents": { "properties": { "id": { diff --git a/openmetadata-service/src/main/resources/elasticsearch/jp/team_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/jp/team_index_mapping.json index d27b85aed08..3f30541cdb9 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/jp/team_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/jp/team_index_mapping.json @@ -188,6 +188,9 @@ } } }, + "userCount" : { + "type" : "long" + }, "parents": { "properties": { "id": { diff --git a/openmetadata-service/src/main/resources/elasticsearch/zh/team_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/zh/team_index_mapping.json index a4251eb6fa3..9f9410d7df3 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/zh/team_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/zh/team_index_mapping.json @@ -179,6 +179,9 @@ } } }, + "userCount" : { + "type" : "long" + }, "parents": { "properties": { "id": {