Skip to content

Commit

Permalink
[MODCONSKC-39] - Implement Sync between sharing configs and created c…
Browse files Browse the repository at this point in the history
…onfigs in tenants (#105)

* [MODCONSKC-39] - Implemented sync table and fixed using correct roleId

* Implement sync configs with other tenants

* Fixed object creation

* Optimized Sharing Repository methods and fixed incorrect usages

* Improve Sharing Service and fix tests

* Fixed bugs and tests

* removed unused method

* Fixed bugs and improvements

* Use collection permission

* add log message

* fixed doc message

* Created Dto for Client Interfaces

* Fixed FeignClient

* Fixed FeignClient

* Removed unused dtos

* Fix tests

* Added ability to edit sharing role names

* Fix bug relate to sync sharing role/capability feature

* Fix bug relate to sync sharing role/capability feature

* Temporarily disable role editing feature

* Temporarily disable role editing feature

* Temporarily disable role editing feature

* Fix bugs related editing role name, setting correct roleId payload

* Fix bug related syncing sharing role capability/sets

* Fix tests

* Add new test for syncing sharing roles

* Fix test

* Fixed url name for feign client

* minor improvements
  • Loading branch information
azizbekxm authored Oct 10, 2024
1 parent 0230c33 commit d49dd2b
Show file tree
Hide file tree
Showing 54 changed files with 1,355 additions and 500 deletions.
4 changes: 4 additions & 0 deletions descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -794,15 +794,19 @@
"circulation-storage.cancellation-reasons.item.delete",
"user-settings.custom-fields.item.post",
"user-settings.custom-fields.collection.get",
"roles.collection.get",
"roles.item.post",
"roles.item.put",
"roles.item.delete",
"policies.item.get",
"policies.item.post",
"policies.item.put",
"policies.item.delete",
"role-capabilities.collection.get",
"role-capabilities.collection.post",
"role-capabilities.collection.put",
"role-capabilities.collection.delete",
"role-capability-sets.collection.get",
"role-capability-sets.collection.post",
"role-capability-sets.collection.put",
"role-capability-sets.collection.delete"
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/org/folio/consortia/client/PoliciesClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.folio.consortia.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.UUID;

@FeignClient(name = "policies")
public interface PoliciesClient {

@GetMapping(value = "/{policyId}")
void getPolicyById(@PathVariable UUID policyId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.folio.consortia.client;


import java.util.UUID;

import org.folio.consortia.domain.dto.Capabilities;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name = "role-capabilities", url = "roles")
public interface RoleCapabilitiesClient {

@GetMapping(value = "/{roleId}/capabilities")
Capabilities getRoleCapabilitiesByRoleId(@PathVariable UUID roleId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.folio.consortia.client;

import java.util.UUID;

import org.folio.consortia.domain.dto.CapabilitySets;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name = "role-capability-sets", url = "roles")
public interface RoleCapabilitySetsClient {

@GetMapping(value = "/{roleId}/capability-sets")
CapabilitySets getRoleCapabilitySetsRoleId(@PathVariable UUID roleId);
}
14 changes: 14 additions & 0 deletions src/main/java/org/folio/consortia/client/RolesClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.folio.consortia.client;

import org.folio.consortia.domain.dto.Roles;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "roles")
public interface RolesClient {

@GetMapping
Roles getRolesByQuery(@RequestParam("query") String query);

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class SharingRoleEntity extends AuditableEntity {
@Id
private UUID id;
private UUID roleId;
private String roleName;
private String tenantId;
private Boolean isCapabilitySetsShared;
private Boolean isCapabilitiesShared;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public interface SharingPolicyRepository extends JpaRepository<SharingPolicyEnti

boolean existsByPolicyId(UUID policyId);

boolean existsByPolicyIdAndTenantId(UUID policyId, String tenantId);

@Modifying
@Query("DELETE FROM SharingPolicyEntity sp WHERE sp.policyId = ?1")
void deleteByPolicyId(UUID policyId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.folio.consortia.repository;

import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;

Expand All @@ -11,19 +12,31 @@

public interface SharingRoleRepository extends JpaRepository<SharingRoleEntity, UUID> {

List<SharingRoleEntity> findByRoleId(UUID roleId);
List<SharingRoleEntity> findByRoleName(String roleName);

SharingRoleEntity findByRoleIdAndTenantId(UUID roleId, String tenantId);
Optional<SharingRoleEntity> findByRoleNameAndTenantId(String roleName, String tenantId);

@Query("SELECT sr.tenantId FROM SharingRoleEntity sr WHERE sr.roleId = ?1")
Set<String> findTenantsByRoleId(UUID roleId);
Optional<SharingRoleEntity> findByRoleIdAndTenantId(UUID roleId, String tenantId);

Set<String> findTenantsByRoleIdAndIsCapabilitySetsSharedTrue(UUID roleId);
@Query("SELECT sr.tenantId FROM SharingRoleEntity sr WHERE sr.roleName = ?1")
Set<String> findTenantsByRoleName(String roleName);

Set<String> findTenantsByRoleIdAndIsCapabilitiesSharedTrue(UUID roleId);
@Query("SELECT sr.tenantId FROM SharingRoleEntity sr WHERE sr.roleName = ?1 and sr.isCapabilitiesShared = true")
Set<String> findTenantsByRoleNameAndIsCapabilitiesSharedTrue(String roleName);

@Query("SELECT sr.tenantId FROM SharingRoleEntity sr WHERE sr.roleName = ?1 and sr.isCapabilitySetsShared = true")
Set<String> findTenantsByRoleNameAndIsCapabilitySetsSharedTrue(String roleName);

@Query("select s.roleId from SharingRoleEntity s where s.roleName = ?1 and s.tenantId = ?2")
UUID findRoleIdByRoleNameAndTenantId(String roleName, String tenantId);

boolean existsByRoleId(UUID roleId);

boolean existsByRoleIdAndTenantId(UUID roleId, String tenantId);

boolean existsByRoleNameAndTenantIdAndIsCapabilitiesSharedTrue(String roleName, String tenantId);
boolean existsByRoleNameAndTenantIdAndIsCapabilitySetsSharedTrue(String roleName, String tenantId);

@Modifying
void deleteByRoleId(UUID roleId);
void deleteByRoleName(String roleName);
}
Loading

0 comments on commit d49dd2b

Please sign in to comment.