diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/WorkspaceServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/WorkspaceServiceCEImpl.java index 1daa46f183..2129fd0d90 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/WorkspaceServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/WorkspaceServiceCEImpl.java @@ -8,7 +8,6 @@ import com.appsmith.server.constants.Constraint; import com.appsmith.server.constants.FieldName; import com.appsmith.server.domains.Asset; import com.appsmith.server.domains.PermissionGroup; -import com.appsmith.server.domains.QWorkspace; import com.appsmith.server.domains.User; import com.appsmith.server.domains.Workspace; import com.appsmith.server.domains.WorkspacePlugin; @@ -31,7 +30,6 @@ import com.appsmith.server.services.SessionUserService; import com.appsmith.server.solutions.PermissionGroupPermission; import com.appsmith.server.solutions.PolicySolution; import com.appsmith.server.solutions.WorkspacePermission; -import com.mongodb.DBObject; import jakarta.validation.Validator; import lombok.extern.slf4j.Slf4j; import org.modelmapper.ModelMapper; @@ -39,9 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; 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.data.mongodb.core.query.Update; import org.springframework.http.codec.multipart.Part; import org.springframework.stereotype.Service; import org.springframework.util.MultiValueMap; @@ -72,7 +67,6 @@ import static com.appsmith.server.constants.PatternConstants.EMAIL_PATTERN; import static com.appsmith.server.constants.PatternConstants.WEBSITE_PATTERN; import static com.appsmith.server.helpers.PermissionUtils.collateAllPermissions; import static com.appsmith.server.helpers.TextUtils.generateDefaultRoleNameForResource; -import static com.appsmith.server.repositories.ce.BaseAppsmithRepositoryCEImpl.fieldName; import static java.lang.Boolean.TRUE; @Slf4j @@ -459,23 +453,8 @@ public class WorkspaceServiceCEImpl extends BaseService { - Query query = new Query( - Criteria.where(fieldName(QWorkspace.workspace.id)).is(id)); - DBObject update = getDbObject(resource); - Update updateObj = new Update(); - Map updateMap = update.toMap(); - updateMap.forEach(updateObj::set); - return mongoTemplate - .updateFirst(query, updateObj, resource.getClass()) - .flatMap(updateResult -> { - if (updateResult.getMatchedCount() == 0) { - return Mono.error(new AppsmithException( - AppsmithError.NO_RESOURCE_FOUND, FieldName.WORKSPACE, id)); - } - return repository.findById(id).flatMap(analyticsService::sendUpdateEvent); - }); - })); + .then(Mono.defer(() -> repository.updateById(id, resource, null))) + .flatMap(analyticsService::sendUpdateEvent); } @Override diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/WorkspaceServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/WorkspaceServiceTest.java index 1ee8dec66a..c31becd062 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/WorkspaceServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/WorkspaceServiceTest.java @@ -13,7 +13,6 @@ import com.appsmith.server.domains.Application; import com.appsmith.server.domains.Asset; import com.appsmith.server.domains.PermissionGroup; import com.appsmith.server.domains.Plugin; -import com.appsmith.server.domains.QWorkspace; import com.appsmith.server.domains.User; import com.appsmith.server.domains.Workspace; import com.appsmith.server.dtos.InviteUsersDTO; @@ -32,7 +31,6 @@ import com.appsmith.server.repositories.UserRepository; import com.appsmith.server.repositories.WorkspaceRepository; import com.appsmith.server.solutions.EnvironmentPermission; import com.appsmith.server.solutions.UserAndAccessManagementService; -import com.mongodb.client.result.UpdateResult; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -45,10 +43,6 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBufferUtils; import org.springframework.core.io.buffer.DefaultDataBufferFactory; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; -import org.springframework.data.mongodb.core.query.Update; import org.springframework.http.MediaType; import org.springframework.http.codec.multipart.FilePart; import org.springframework.security.test.context.support.WithUserDetails; @@ -86,7 +80,6 @@ import static com.appsmith.server.constants.FieldName.ADMINISTRATOR; import static com.appsmith.server.constants.FieldName.DEVELOPER; import static com.appsmith.server.constants.FieldName.VIEWER; import static com.appsmith.server.helpers.TextUtils.generateDefaultRoleNameForResource; -import static com.appsmith.server.repositories.ce.BaseAppsmithRepositoryCEImpl.fieldName; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -125,9 +118,6 @@ public class WorkspaceServiceTest { @Autowired UserRepository userRepository; - @Autowired - MongoTemplate mongoTemplate; - Workspace workspace; @Autowired @@ -1685,47 +1675,6 @@ public class WorkspaceServiceTest { .verifyComplete(); } - @Test - @WithUserDetails(value = "api_user") - void testWorkspaceUpdate_checkAdditionalFieldsArePresentAfterUpdate() { - String testName = "testWorkspaceUpdate"; - String additionalField = "testWorkspaceUpdate"; - Workspace workspace = new Workspace(); - workspace.setName(testName); - Workspace createdWorkspace = workspaceService.create(workspace).block(); - - Update updateAddAdditionalField = new Update().set(additionalField, true); - Query queryWorkspace = - new Query(Criteria.where(fieldName(QWorkspace.workspace.id)).is(createdWorkspace.getId())); - UpdateResult updateResult = - mongoTemplate.updateMulti(queryWorkspace, updateAddAdditionalField, Workspace.class); - - assertThat(updateResult.wasAcknowledged()).isTrue(); - assertThat(updateResult.getMatchedCount()).isEqualTo(1); - assertThat(updateResult.getModifiedCount()).isEqualTo(1); - - Criteria criteriaAdditionalField = new Criteria() - .andOperator( - Criteria.where(fieldName(QWorkspace.workspace.id)).is(createdWorkspace.getId()), - Criteria.where(additionalField).exists(true)); - Query queryWorkspaceWithAdditionalField = new Query(criteriaAdditionalField); - - long countWorkspaceWithAdditionalField = - mongoTemplate.count(queryWorkspaceWithAdditionalField, Workspace.class); - assertThat(countWorkspaceWithAdditionalField).isEqualTo(1); - - Workspace updateWorkspace = new Workspace(); - updateWorkspace.setName(testName + " updated"); - Workspace updatedWorkspace = workspaceService - .update(createdWorkspace.getId(), updateWorkspace) - .block(); - assertThat(updatedWorkspace.getName()).isEqualTo(testName + " updated"); - - long countWorkspaceWithAdditionalFieldAfterUpdate = - mongoTemplate.count(queryWorkspaceWithAdditionalField, Workspace.class); - assertThat(countWorkspaceWithAdditionalFieldAfterUpdate).isEqualTo(1); - } - @Test @WithUserDetails(value = "api_user") void testInviteDuplicateUsers_shouldReturnUniqueUsers() {