Skip to content

Commit

Permalink
SHIBUI-2394
Browse files Browse the repository at this point in the history
Fixes for group/approver edits and removing all approvers
  • Loading branch information
chasegawa committed Nov 9, 2022
1 parent 500b960 commit bce1fde
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,22 @@

import edu.internet2.tier.shibboleth.admin.ui.security.model.Approvers;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface ApproversRepository extends JpaRepository<Approvers, String> {
@Modifying
@Query(nativeQuery = true, value="DELETE FROM approvers_user_groups WHERE approver_groups_resource_id IN (:ids)")
void deleteGroupAssociationsForIds(@Param("ids") List<String> ids);

Approvers findByResourceId(String resourceId);

@Query(nativeQuery = true,
value = "SELECT resource_id FROM approvers WHERE resource_id IN (SELECT approvers_resource_id " +
" FROM approvers_user_groups " +
" WHERE approver_groups_resource_id = :resourceId)")
value = "SELECT approvers_list_resource_id " +
" FROM user_groups_approvers " +
" WHERE user_groups_resource_id = :resourceId")
List<String> getApproverIdsForGroup(@Param("resourceId") String resourceId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,8 @@

public interface GroupsRepository extends JpaRepository<Group, String> {
@Modifying
@Query(nativeQuery = true,
value = "DELETE user_groups_approvers " +
" WHERE approvers_list_resource_id IN (SELECT approvers_list_resource_id " +
" FROM user_group_approvers " +
" WHERE user_groups_resource_id = :resourceId)")
void clearApproversForGroup(@Param("resourceId") String resourceId);
@Query(nativeQuery = true, value = "DELETE FROM user_groups_approvers WHERE approvers_list_resource_id IN (:approverIds)")
void clearApproversByApproverIds(@Param("approverIds") List<String> approverIds);

void deleteByResourceId(String resourceId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,10 @@ private void manageApproversList(Group group) {
AtomicInteger approversCount = new AtomicInteger();
group.getApproversList().forEach(a -> approversCount.addAndGet(a.getApproverGroupIds().size()));
if (approversCount.intValue() == 0) {
// Need to manually manage the join tables
List<String> ids = approversRepository.getApproverIdsForGroup(group.getResourceId());
groupRepository.clearApproversForGroup(group.getResourceId());
groupRepository.clearApproversByApproverIds(ids);
approversRepository.deleteGroupAssociationsForIds(ids);
approversRepository.deleteAllById(ids);
group.setApproversList(new ArrayList<>());
return;
Expand Down

0 comments on commit bce1fde

Please sign in to comment.