From 8c2f26d4134c262eb379a049ed0ffa44c1d9ab87 Mon Sep 17 00:00:00 2001 From: Abhijeet Date: Thu, 12 Dec 2024 15:30:06 +0530 Subject: [PATCH] fix: Add serialiser for idPolicies projection --- .../server/projections/IdPoliciesOnly.java | 24 ++++++++++++++++--- .../ce/ActionCollectionRepositoryCE.java | 3 --- .../CustomActionCollectionRepositoryCE.java | 3 +++ ...ustomActionCollectionRepositoryCEImpl.java | 9 +++++++ .../ce/CustomNewActionRepositoryCE.java | 3 +++ .../ce/CustomNewActionRepositoryCEImpl.java | 8 +++++++ .../ce/CustomNewPageRepositoryCE.java | 3 +++ .../ce/CustomNewPageRepositoryCEImpl.java | 8 +++++++ .../ce/NewActionRepositoryCE.java | 3 --- .../repositories/ce/NewPageRepositoryCE.java | 3 --- 10 files changed, 55 insertions(+), 12 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/projections/IdPoliciesOnly.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/projections/IdPoliciesOnly.java index 3e0ff37e4ab8..f593a536f1d5 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/projections/IdPoliciesOnly.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/projections/IdPoliciesOnly.java @@ -1,11 +1,29 @@ package com.appsmith.server.projections; import com.appsmith.external.models.Policy; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Getter; +import java.util.HashMap; import java.util.Map; -public interface IdPoliciesOnly { - String getId(); +@Getter +public class IdPoliciesOnly { + String id; + Map policyMap = new HashMap<>(); - Map getPolicyMap(); + // TODO Abhijeet: This is a temporary fix to convert the map of Object to map of Policy + public IdPoliciesOnly(String id, Map policyMap) { + this.id = id; + if (policyMap == null) { + return; + } + policyMap.forEach((key, value) -> { + if (value instanceof Policy) { + this.policyMap.put(key, (Policy) value); + } else if (value instanceof Map) { + this.policyMap.put(key, new ObjectMapper().convertValue(value, Policy.class)); + } + }); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/ActionCollectionRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/ActionCollectionRepositoryCE.java index 95664175df12..7cbd0d0d3290 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/ActionCollectionRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/ActionCollectionRepositoryCE.java @@ -1,7 +1,6 @@ package com.appsmith.server.repositories.ce; import com.appsmith.server.domains.ActionCollection; -import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseRepository; import com.appsmith.server.repositories.CustomActionCollectionRepository; @@ -10,6 +9,4 @@ public interface ActionCollectionRepositoryCE extends BaseRepository, CustomActionCollectionRepository { List findByApplicationId(String applicationId); - - List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCE.java index 9b35372080b3..6f36e6be6ed0 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCE.java @@ -4,6 +4,7 @@ import com.appsmith.server.acl.AclPermission; import com.appsmith.server.domains.ActionCollection; import com.appsmith.server.domains.User; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.AppsmithRepository; import org.springframework.data.domain.Sort; @@ -43,4 +44,6 @@ List findByPageIdAndViewMode( List findAllNonComposedByPageIdAndViewMode( String pageId, boolean viewMode, AclPermission permission, User currentUser); + + List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java index f72171cd347a..ae2a383be9e6 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java @@ -4,9 +4,11 @@ import com.appsmith.server.acl.AclPermission; import com.appsmith.server.constants.FieldName; import com.appsmith.server.domains.ActionCollection; +import com.appsmith.server.domains.NewAction; import com.appsmith.server.domains.User; import com.appsmith.server.helpers.ce.bridge.Bridge; import com.appsmith.server.helpers.ce.bridge.BridgeQuery; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import org.springframework.data.domain.Sort; @@ -181,4 +183,11 @@ public List findAllNonComposedByPageIdAndViewMode( String pageId, boolean viewMode, AclPermission permission, User currentUser) { return this.findByPageIdAndViewMode(pageId, viewMode, permission, currentUser); } + + @Override + public List findIdsAndPolicyMapByApplicationIdIn(List applicationIds) { + return queryBuilder() + .criteria(Bridge.in(NewAction.Fields.applicationId, applicationIds)) + .all(IdPoliciesOnly.class); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCE.java index d0bddf1e50cf..c19390784143 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCE.java @@ -4,6 +4,7 @@ import com.appsmith.server.acl.AclPermission; import com.appsmith.server.domains.NewAction; import com.appsmith.server.domains.User; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.AppsmithRepository; import org.springframework.data.domain.Sort; @@ -90,4 +91,6 @@ List findAllPublishedActionsByContextIdAndContextType( boolean includeJs); List findAllByApplicationIds(List branchedArtifactIds, List includedFields); + + List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java index 88915b047b2f..0bda352b0bd2 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java @@ -7,6 +7,7 @@ import com.appsmith.server.domains.User; import com.appsmith.server.helpers.ce.bridge.Bridge; import com.appsmith.server.helpers.ce.bridge.BridgeQuery; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import io.micrometer.observation.ObservationRegistry; import jakarta.transaction.Transactional; @@ -485,4 +486,11 @@ public List findAllByApplicationIds(List applicationIds, List .fields(includedFields) .all(); } + + @Override + public List findIdsAndPolicyMapByApplicationIdIn(List applicationIds) { + return queryBuilder() + .criteria(Bridge.in(NewAction.Fields.applicationId, applicationIds)) + .all(IdPoliciesOnly.class); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCE.java index f966f9d49cef..9953010cca09 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCE.java @@ -3,6 +3,7 @@ import com.appsmith.server.acl.AclPermission; import com.appsmith.server.domains.NewPage; import com.appsmith.server.domains.User; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.AppsmithRepository; import java.util.Collection; @@ -48,4 +49,6 @@ Optional findPageByBranchNameAndBasePageId( List findAllByApplicationIdsWithoutPermission(List applicationIds, List includeFields); Optional updateDependencyMap(String pageId, Map> dependencyMap); + + List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCEImpl.java index a672bc39eb03..b94167c2437c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewPageRepositoryCEImpl.java @@ -10,6 +10,7 @@ import com.appsmith.server.helpers.ce.bridge.BridgeQuery; import com.appsmith.server.helpers.ce.bridge.BridgeUpdate; import com.appsmith.server.projections.IdOnly; +import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -263,4 +264,11 @@ public Optional updateDependencyMap(String pageId, Map findIdsAndPolicyMapByApplicationIdIn(List applicationIds) { + return queryBuilder() + .criteria(Bridge.in(NewPage.Fields.applicationId, applicationIds)) + .all(IdPoliciesOnly.class); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewActionRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewActionRepositoryCE.java index e1316a0234ab..07424ffcbea0 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewActionRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewActionRepositoryCE.java @@ -3,7 +3,6 @@ import com.appsmith.server.domains.NewAction; import com.appsmith.server.dtos.PluginTypeAndCountDTO; import com.appsmith.server.newactions.projections.IdAndDatasourceIdNewActionView; -import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseRepository; import com.appsmith.server.repositories.CustomNewActionRepository; import org.springframework.data.jpa.repository.Query; @@ -21,8 +20,6 @@ public interface NewActionRepositoryCE extends BaseRepository Optional countByDeletedAtNull(); - List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); - List findIdAndDatasourceIdByApplicationIdIn(List applicationIds); @Query( diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewPageRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewPageRepositoryCE.java index 7f4116a5b13b..8b80f33db61d 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewPageRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/NewPageRepositoryCE.java @@ -1,7 +1,6 @@ package com.appsmith.server.repositories.ce; import com.appsmith.server.domains.NewPage; -import com.appsmith.server.projections.IdPoliciesOnly; import com.appsmith.server.repositories.BaseRepository; import com.appsmith.server.repositories.CustomNewPageRepository; @@ -13,6 +12,4 @@ public interface NewPageRepositoryCE extends BaseRepository, Cu List findByApplicationId(String applicationId); Optional countByDeletedAtNull(); - - List findIdsAndPolicyMapByApplicationIdIn(List applicationIds); }