diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/BaseRepositoryImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/BaseRepositoryImpl.java index a4090d8f705e..7bae25049da2 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/BaseRepositoryImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/BaseRepositoryImpl.java @@ -161,9 +161,7 @@ public Flux findAll() { .flatMapMany(principal -> { Query query = new Query(notDeleted()); return mongoOperations.find( - query.cursorBatchSize(10000), - entityInformation.getJavaType(), - entityInformation.getCollectionName()); + query, entityInformation.getJavaType(), entityInformation.getCollectionName()); }); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewActionRepositoryImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewActionRepositoryImpl.java index b3eb05cb8dd3..e45c7fd224f9 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewActionRepositoryImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewActionRepositoryImpl.java @@ -2,7 +2,6 @@ import com.appsmith.server.repositories.ce.CustomNewActionRepositoryCEImpl; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.ReactiveMongoOperations; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.stereotype.Component; @@ -15,8 +14,7 @@ public class CustomNewActionRepositoryImpl extends CustomNewActionRepositoryCEIm public CustomNewActionRepositoryImpl( ReactiveMongoOperations mongoOperations, MongoConverter mongoConverter, - CacheableRepositoryHelper cacheableRepositoryHelper, - MongoTemplate mongoTemplate) { - super(mongoOperations, mongoConverter, cacheableRepositoryHelper, mongoTemplate); + CacheableRepositoryHelper cacheableRepositoryHelper) { + super(mongoOperations, mongoConverter, cacheableRepositoryHelper); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewPageRepositoryImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewPageRepositoryImpl.java index 690b54d4c18f..370e5202b216 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewPageRepositoryImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomNewPageRepositoryImpl.java @@ -2,7 +2,6 @@ import com.appsmith.server.repositories.ce.CustomNewPageRepositoryCEImpl; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.ReactiveMongoOperations; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.stereotype.Component; @@ -14,8 +13,7 @@ public class CustomNewPageRepositoryImpl extends CustomNewPageRepositoryCEImpl i public CustomNewPageRepositoryImpl( ReactiveMongoOperations mongoOperations, MongoConverter mongoConverter, - CacheableRepositoryHelper cacheableRepositoryHelper, - MongoTemplate mongoTemplate) { - super(mongoOperations, mongoConverter, cacheableRepositoryHelper, mongoTemplate); + CacheableRepositoryHelper cacheableRepositoryHelper) { + super(mongoOperations, mongoConverter, cacheableRepositoryHelper); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/BaseAppsmithRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/BaseAppsmithRepositoryCEImpl.java index 28d0012b8569..c2d9b0634b35 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/BaseAppsmithRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/BaseAppsmithRepositoryCEImpl.java @@ -22,7 +22,6 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.UpdateDefinition; -import org.springframework.data.mongodb.repository.Meta; import org.springframework.security.core.context.ReactiveSecurityContextHolder; import org.springframework.util.CollectionUtils; import reactor.core.publisher.Flux; @@ -167,7 +166,7 @@ public Mono findById(String id, List projectionFieldNames, Optional setUserPermissionsInObject(obj, permissionGroups)); }); @@ -332,7 +331,6 @@ protected Mono queryOne(List criterias, List projectionFiel }); } - @Meta(cursorBatchSize = 10000) protected Mono queryOne( List criterias, List projectionFieldNames, Optional permission) { Mono> permissionGroupsMono = getCurrentUserPermissionGroupsIfRequired(permission); @@ -541,7 +539,7 @@ public Flux queryAllWithPermissionGroups( sortOptional.ifPresent(sort -> query.with(sort)); return mongoOperations .query(this.genericDomain) - .matching(query.cursorBatchSize(10000)) + .matching(query) .all() .flatMap(obj -> setUserPermissionsInObject(obj, permissionGroups)); } 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 11a6cb6af19f..007ff409f879 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 @@ -78,7 +78,7 @@ Flux findAllNonJsActionsByNameAndPageIdsAndViewMode( Mono> bulkUpdate(List newActions); - Mono> publishActions(String applicationId, AclPermission permission); + Mono publishActions(String applicationId, AclPermission permission); Mono archiveDeletedUnpublishedActions(String applicationId, AclPermission permission); 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 c45cf40bfa45..5a90b20dcec9 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 @@ -20,12 +20,9 @@ import org.bson.Document; import org.bson.types.ObjectId; import org.springframework.data.domain.Sort; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.ReactiveMongoOperations; import org.springframework.data.mongodb.core.aggregation.Aggregation; -import org.springframework.data.mongodb.core.aggregation.AggregationOperation; -import org.springframework.data.mongodb.core.aggregation.AggregationResults; -import org.springframework.data.mongodb.core.aggregation.Fields; +import org.springframework.data.mongodb.core.aggregation.AggregationUpdate; import org.springframework.data.mongodb.core.aggregation.GroupOperation; import org.springframework.data.mongodb.core.aggregation.MatchOperation; import org.springframework.data.mongodb.core.aggregation.ProjectionOperation; @@ -55,15 +52,11 @@ public class CustomNewActionRepositoryCEImpl extends BaseAppsmithRepositoryImpl implements CustomNewActionRepositoryCE { - private final MongoTemplate mongoTemplate; - public CustomNewActionRepositoryCEImpl( ReactiveMongoOperations mongoOperations, MongoConverter mongoConverter, - CacheableRepositoryHelper cacheableRepositoryHelper, - MongoTemplate mongoTemplate) { + CacheableRepositoryHelper cacheableRepositoryHelper) { super(mongoOperations, mongoConverter, cacheableRepositoryHelper); - this.mongoTemplate = mongoTemplate; } @Override @@ -578,33 +571,16 @@ public Flux findByDefaultApplicationId(String defaultApplicationId, O } @Override - public Mono> publishActions(String applicationId, AclPermission permission) { + public Mono publishActions(String applicationId, AclPermission permission) { Criteria applicationIdCriteria = where(fieldName(QNewAction.newAction.applicationId)).is(applicationId); + // using aggregation update instead of regular update here + // it's required to set a field to a value of another field from the same domain + AggregationUpdate aggregationUpdate = AggregationUpdate.update() + .set(fieldName(QNewAction.newAction.publishedAction)) + .toValue("$" + fieldName(QNewAction.newAction.unpublishedAction)); - Mono> permissionGroupsMono = - getCurrentUserPermissionGroupsIfRequired(Optional.ofNullable(permission)); - - return permissionGroupsMono.flatMap(permissionGroups -> { - AggregationOperation matchAggregationWithPermission = null; - if (permission == null) { - matchAggregationWithPermission = Aggregation.match(new Criteria().andOperator(notDeleted())); - } else { - matchAggregationWithPermission = Aggregation.match( - new Criteria().andOperator(notDeleted(), userAcl(permissionGroups, permission))); - } - AggregationOperation matchAggregation = Aggregation.match(applicationIdCriteria); - AggregationOperation wholeProjection = Aggregation.project(NewAction.class); - AggregationOperation addFieldsOperation = Aggregation.addFields() - .addField(fieldName(QNewAction.newAction.publishedAction)) - .withValueOf(Fields.field(fieldName(QNewAction.newAction.unpublishedAction))) - .build(); - Aggregation combinedAggregation = Aggregation.newAggregation( - matchAggregation, matchAggregationWithPermission, wholeProjection, addFieldsOperation); - AggregationResults updatedResults = - mongoTemplate.aggregate(combinedAggregation, NewAction.class, NewAction.class); - return bulkUpdate(updatedResults.getMappedResults()); - }); + return updateByCriteria(List.of(applicationIdCriteria), aggregationUpdate, permission); } @Override 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 ec6775c2cb4e..dc940ee25b50 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,7 +3,7 @@ import com.appsmith.server.acl.AclPermission; import com.appsmith.server.domains.NewPage; import com.appsmith.server.repositories.AppsmithRepository; -import com.mongodb.bulk.BulkWriteResult; +import com.mongodb.client.result.UpdateResult; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -43,7 +43,5 @@ Mono findByGitSyncIdAndDefaultApplicationId( Mono findByGitSyncIdAndDefaultApplicationId( String defaultApplicationId, String gitSyncId, Optional permission); - Mono> publishPages(Collection pageIds, AclPermission permission); - - Mono> bulkUpdate(List newPages); + Mono publishPages(Collection pageIds, AclPermission permission); } 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 acd1a16e0f67..92a93f963e22 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 @@ -9,32 +9,20 @@ import com.appsmith.server.dtos.PageDTO; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import com.appsmith.server.repositories.CacheableRepositoryHelper; -import com.mongodb.bulk.BulkWriteResult; -import com.mongodb.client.model.UpdateOneModel; -import com.mongodb.client.model.WriteModel; +import com.mongodb.client.result.UpdateResult; import lombok.extern.slf4j.Slf4j; -import org.bson.Document; -import org.bson.types.ObjectId; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.ReactiveMongoOperations; -import org.springframework.data.mongodb.core.aggregation.Aggregation; -import org.springframework.data.mongodb.core.aggregation.AggregationOperation; -import org.springframework.data.mongodb.core.aggregation.AggregationResults; -import org.springframework.data.mongodb.core.aggregation.Fields; +import org.springframework.data.mongodb.core.aggregation.AggregationUpdate; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import org.springframework.util.CollectionUtils; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; import static org.springframework.data.mongodb.core.query.Criteria.where; @@ -42,15 +30,11 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl implements CustomNewPageRepositoryCE { - private final MongoTemplate mongoTemplate; - public CustomNewPageRepositoryCEImpl( ReactiveMongoOperations mongoOperations, MongoConverter mongoConverter, - CacheableRepositoryHelper cacheableRepositoryHelper, - MongoTemplate mongoTemplate) { + CacheableRepositoryHelper cacheableRepositoryHelper) { super(mongoOperations, mongoConverter, cacheableRepositoryHelper); - this.mongoTemplate = mongoTemplate; } @Override @@ -267,55 +251,14 @@ public Mono findByGitSyncIdAndDefaultApplicationId( } @Override - public Mono> publishPages(Collection pageIds, AclPermission permission) { + public Mono publishPages(Collection pageIds, AclPermission permission) { Criteria applicationIdCriteria = where(fieldName(QNewPage.newPage.id)).in(pageIds); + // using aggregation update instead of regular update here + // it's required to set a field to a value of another field from the same domain + AggregationUpdate aggregationUpdate = AggregationUpdate.update() + .set(fieldName(QNewPage.newPage.publishedPage)) + .toValue("$" + fieldName(QNewPage.newPage.unpublishedPage)); - Mono> permissionGroupsMono = - getCurrentUserPermissionGroupsIfRequired(Optional.ofNullable(permission)); - - return permissionGroupsMono.flatMap(permissionGroups -> { - AggregationOperation matchAggregationWithPermission = null; - if (permission == null) { - matchAggregationWithPermission = Aggregation.match(new Criteria().andOperator(notDeleted())); - } else { - matchAggregationWithPermission = Aggregation.match( - new Criteria().andOperator(notDeleted(), userAcl(permissionGroups, permission))); - } - AggregationOperation matchAggregation = Aggregation.match(applicationIdCriteria); - AggregationOperation wholeProjection = Aggregation.project(NewPage.class); - AggregationOperation addFieldsOperation = Aggregation.addFields() - .addField(fieldName(QNewPage.newPage.publishedPage)) - .withValueOf(Fields.field(fieldName(QNewPage.newPage.unpublishedPage))) - .build(); - Aggregation combinedAggregation = Aggregation.newAggregation( - matchAggregation, matchAggregationWithPermission, wholeProjection, addFieldsOperation); - AggregationResults updatedResults = - mongoTemplate.aggregate(combinedAggregation, NewPage.class, NewPage.class); - return bulkUpdate(updatedResults.getMappedResults()); - }); - } - - @Override - public Mono> bulkUpdate(List newPages) { - if (CollectionUtils.isEmpty(newPages)) { - return Mono.just(Collections.emptyList()); - } - - // convert the list of new pages to a list of DBObjects - List> dbObjects = newPages.stream() - .map(newPage -> { - assert newPage.getId() != null; - Document document = new Document(); - mongoOperations.getConverter().write(newPage, document); - document.remove("_id"); - return (WriteModel) new UpdateOneModel( - new Document("_id", new ObjectId(newPage.getId())), new Document("$set", document)); - }) - .collect(Collectors.toList()); - - return mongoOperations - .getCollection(mongoOperations.getCollectionName(NewPage.class)) - .flatMapMany(documentMongoCollection -> documentMongoCollection.bulkWrite(dbObjects)) - .collectList(); + return updateByCriteria(List.of(applicationIdCriteria), aggregationUpdate, permission); } } 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 505981ef1dcc..e74852d3b521 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,17 +3,12 @@ import com.appsmith.server.domains.NewAction; import com.appsmith.server.repositories.BaseRepository; import com.appsmith.server.repositories.CustomNewActionRepository; -import org.springframework.data.mongodb.repository.Meta; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public interface NewActionRepositoryCE extends BaseRepository, CustomNewActionRepository { - @Meta(cursorBatchSize = 10000) Flux findByApplicationId(String applicationId); - @Meta(cursorBatchSize = 10000) - Flux findAllByIdIn(Iterable ids); - Mono countByDeletedAtNull(); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java index 000b4bf90c94..726906023998 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java @@ -50,7 +50,6 @@ import com.appsmith.server.solutions.PagePermission; import com.appsmith.server.solutions.WorkspacePermission; import com.google.common.base.Strings; -import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.result.UpdateResult; import jakarta.annotation.Nullable; import lombok.RequiredArgsConstructor; @@ -1135,7 +1134,7 @@ public Mono publish(String applicationId, boolean isPublishedManual if (isPublishedManually) { application.setLastDeployedAt(Instant.now()); } - Mono> publishPagesMono = + Mono publishPagesMono = newPageService.publishPages(editedPageIds, pagePermission.getEditPermission()); // Archive the deleted pages and save the application changes and then return the pages so that @@ -1145,7 +1144,7 @@ public Mono publish(String applicationId, boolean isPublishedManual }) .cache(); // caching as we'll need this to send analytics attributes after publishing the app - Mono> publishActionsMono = + Mono publishActionsMono = newActionService.publishActions(applicationId, actionPermission.getEditPermission()); // this is a map of pluginType to count of actions for that pluginType, required for analytics diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCE.java index 733b08c21d42..9bf8e71f8e6c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCE.java @@ -14,7 +14,7 @@ import com.appsmith.server.dtos.ce.ImportedActionAndCollectionMapsDTO; import com.appsmith.server.helpers.ce.ImportApplicationPermissionProvider; import com.appsmith.server.services.CrudService; -import com.mongodb.bulk.BulkWriteResult; +import com.mongodb.client.result.UpdateResult; import org.springframework.data.domain.Sort; import org.springframework.util.MultiValueMap; import reactor.core.publisher.Flux; @@ -134,7 +134,7 @@ Mono updateActionsWithImportedCollectionIds( ImportActionCollectionResultDTO importActionCollectionResultDTO, ImportActionResultDTO importActionResultDTO); - Mono> publishActions(String applicationId, AclPermission permission); + Mono publishActions(String applicationId, AclPermission permission); Flux countActionsByPluginType(String applicationId); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCEImpl.java index 276d2ce24ba7..8060c3dc092a 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewActionServiceCEImpl.java @@ -53,7 +53,7 @@ import com.appsmith.server.solutions.DatasourcePermission; import com.appsmith.server.solutions.PagePermission; import com.appsmith.server.solutions.PolicySolution; -import com.mongodb.bulk.BulkWriteResult; +import com.mongodb.client.result.UpdateResult; import io.micrometer.observation.ObservationRegistry; import jakarta.validation.Validator; import lombok.extern.slf4j.Slf4j; @@ -663,7 +663,7 @@ public Mono findById(String id) { @Override public Flux findAllById(Iterable id) { - return repository.findAllByIdIn(id).flatMap(this::sanitizeAction); + return repository.findAllById(id).flatMap(this::sanitizeAction); } @Override @@ -1907,7 +1907,7 @@ public Mono updateActionsWithImportedCollect } return repository - .findAllByIdIn(actionIds) + .findAllById(actionIds) .map(newAction -> { // Update collectionId and defaultCollectionIds in actionDTOs ActionDTO unpublishedAction = newAction.getUnpublishedAction(); @@ -1959,13 +1959,12 @@ public Mono updateActionsWithImportedCollect * This method is used to publish actions of an application. It does two things: * 1. it deletes actions which are deleted from the edit mode. * 2. It updates actions in bulk by setting publishedAction=unpublishedAction - * * @param applicationId * @param permission * @return */ @Override - public Mono> publishActions(String applicationId, AclPermission permission) { + public Mono publishActions(String applicationId, AclPermission permission) { // delete the actions that were deleted in edit mode return repository .archiveDeletedUnpublishedActions(applicationId, permission) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCE.java index b42c05c5fd74..cb480d23f305 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCE.java @@ -7,7 +7,7 @@ import com.appsmith.server.dtos.ApplicationPagesDTO; import com.appsmith.server.dtos.PageDTO; import com.appsmith.server.services.CrudService; -import com.mongodb.bulk.BulkWriteResult; +import com.mongodb.client.result.UpdateResult; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -93,5 +93,5 @@ Mono findByGitSyncIdAndDefaultApplicationId( Flux findPageSlugsByApplicationIds(List applicationIds, AclPermission aclPermission); - Mono> publishPages(Collection pageIds, AclPermission permission); + Mono publishPages(Collection pageIds, AclPermission permission); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCEImpl.java index e6fa147a0fc7..9430d3bfa2e6 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/NewPageServiceCEImpl.java @@ -23,7 +23,7 @@ import com.appsmith.server.services.UserDataService; import com.appsmith.server.solutions.ApplicationPermission; import com.appsmith.server.solutions.PagePermission; -import com.mongodb.bulk.BulkWriteResult; +import com.mongodb.client.result.UpdateResult; import jakarta.validation.Validator; import lombok.extern.slf4j.Slf4j; import net.minidev.json.JSONObject; @@ -692,7 +692,7 @@ public Mono findApplicationPages( } @Override - public Mono> publishPages(Collection pageIds, AclPermission permission) { + public Mono publishPages(Collection pageIds, AclPermission permission) { return repository.publishPages(pageIds, permission); } } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/NewActionServiceUnitTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/NewActionServiceUnitTest.java index 36f9d9aeef86..21141119fb3f 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/NewActionServiceUnitTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/NewActionServiceUnitTest.java @@ -23,6 +23,7 @@ import com.appsmith.server.solutions.DatasourcePermission; import com.appsmith.server.solutions.PagePermission; import com.appsmith.server.solutions.PolicySolution; +import com.mongodb.client.result.UpdateResult; import io.micrometer.observation.ObservationRegistry; import jakarta.validation.Validator; import lombok.extern.slf4j.Slf4j; @@ -38,8 +39,6 @@ import reactor.core.scheduler.Scheduler; import reactor.test.StepVerifier; -import java.util.List; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.anyString; @@ -200,8 +199,9 @@ public void testMissingPluginIdAndTypeFixForJSPluginType() { @Test public void testPublishActionArchivesAndPublishesActions() { String applicationId = "dummy-application-id"; - List updateResult = Mockito.mock(List.class); - Mockito.when(updateResult.size()).thenReturn(10); + UpdateResult updateResult = Mockito.mock(UpdateResult.class); + Mockito.when(updateResult.getModifiedCount()).thenReturn(10L); + Mockito.when(updateResult.getMatchedCount()).thenReturn(5L); Mockito.when(newActionRepository.archiveDeletedUnpublishedActions( applicationId, actionPermission.getEditPermission())) @@ -212,7 +212,8 @@ public void testPublishActionArchivesAndPublishesActions() { StepVerifier.create(newActionService.publishActions(applicationId, actionPermission.getEditPermission())) .assertNext(updateResult1 -> { - assertEquals(10, updateResult1.size()); + assertEquals(10L, updateResult1.getModifiedCount()); + assertEquals(5L, updateResult1.getMatchedCount()); }) .verifyComplete(); }