chore: use repo method to update workspace (#30998)
Reducing our use of `mongoTemplate` and kind-of undoing https://github.com/appsmithorg/appsmith/pull/22549.
This commit is contained in:
parent
1cb53c4e8e
commit
91fea4fbe0
|
|
@ -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<WorkspaceRepository, Wor
|
|||
return workspaceFromDb;
|
||||
})
|
||||
.flatMap(this::validateObject)
|
||||
.then(Mono.defer(() -> {
|
||||
Query query = new Query(
|
||||
Criteria.where(fieldName(QWorkspace.workspace.id)).is(id));
|
||||
DBObject update = getDbObject(resource);
|
||||
Update updateObj = new Update();
|
||||
Map<String, Object> 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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user