chore: Remove UpdateDefinition from MongoDB API (#33575)

Reduce usage of MongoDB-specific APIs. Needed for Postgres. 

/test sanity

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9159562023>
> Commit: 563b633b814562a6d300cf09a5ac233b0ecee54b
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9159562023&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->
This commit is contained in:
Shrikant Sharat Kandula 2024-05-21 12:13:35 +05:30 committed by GitHub
parent 5ad365a86e
commit e161b51725
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 18 deletions

View File

@ -2,8 +2,8 @@ package com.appsmith.server.repositories;
import com.appsmith.external.models.BaseDomain; import com.appsmith.external.models.BaseDomain;
import com.appsmith.server.acl.AclPermission; import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.helpers.ce.bridge.BridgeUpdate;
import com.appsmith.server.repositories.ce.params.QueryAllParams; import com.appsmith.server.repositories.ce.params.QueryAllParams;
import org.springframework.data.mongodb.core.query.UpdateDefinition;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.util.List; import java.util.List;
@ -18,13 +18,15 @@ public interface AppsmithRepository<T extends BaseDomain> {
Mono<T> updateById(String id, T resource, AclPermission permission); Mono<T> updateById(String id, T resource, AclPermission permission);
Mono<Integer> updateByIdWithoutPermissionCheck(String id, BridgeUpdate update);
QueryAllParams<T> queryBuilder(); QueryAllParams<T> queryBuilder();
Mono<T> setUserPermissionsInObject(T obj, Set<String> permissionGroups); Mono<T> setUserPermissionsInObject(T obj, Set<String> permissionGroups);
Mono<T> setUserPermissionsInObject(T obj); Mono<T> setUserPermissionsInObject(T obj);
Mono<T> updateAndReturn(String id, UpdateDefinition updateObj, Optional<AclPermission> permission); Mono<T> updateAndReturn(String id, BridgeUpdate updateObj, Optional<AclPermission> permission);
/** /**
* This method uses the mongodb bulk operation to save a list of new actions. When calling this method, please note * This method uses the mongodb bulk operation to save a list of new actions. When calling this method, please note

View File

@ -9,6 +9,7 @@ import com.appsmith.server.exceptions.AppsmithError;
import com.appsmith.server.exceptions.AppsmithException; import com.appsmith.server.exceptions.AppsmithException;
import com.appsmith.server.helpers.ce.bridge.Bridge; import com.appsmith.server.helpers.ce.bridge.Bridge;
import com.appsmith.server.helpers.ce.bridge.BridgeQuery; import com.appsmith.server.helpers.ce.bridge.BridgeQuery;
import com.appsmith.server.helpers.ce.bridge.BridgeUpdate;
import com.appsmith.server.repositories.CacheableRepositoryHelper; import com.appsmith.server.repositories.CacheableRepositoryHelper;
import com.appsmith.server.repositories.ce.params.QueryAllParams; import com.appsmith.server.repositories.ce.params.QueryAllParams;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
@ -145,6 +146,10 @@ public abstract class BaseAppsmithRepositoryCEImpl<T extends BaseDomain> {
return queryBuilder().byId(id).permission(permission).updateFirstAndFind(updateObj); return queryBuilder().byId(id).permission(permission).updateFirstAndFind(updateObj);
} }
public Mono<Integer> updateByIdWithoutPermissionCheck(@NonNull String id, BridgeUpdate update) {
return queryBuilder().byId(id).updateFirst(update);
}
public Mono<Integer> updateFieldByDefaultIdAndBranchName( public Mono<Integer> updateFieldByDefaultIdAndBranchName(
String defaultId, String defaultId,
String defaultIdPath, String defaultIdPath,
@ -455,7 +460,7 @@ public abstract class BaseAppsmithRepositoryCEImpl<T extends BaseDomain> {
* *
* @see FindAndModifyOptions * @see FindAndModifyOptions
*/ */
public Mono<T> updateAndReturn(String id, UpdateDefinition updateObj, Optional<AclPermission> permission) { public Mono<T> updateAndReturn(String id, BridgeUpdate updateObj, Optional<AclPermission> permission) {
Query query = new Query(Criteria.where("id").is(id)); Query query = new Query(Criteria.where("id").is(id));
FindAndModifyOptions findAndModifyOptions = FindAndModifyOptions findAndModifyOptions =

View File

@ -5,7 +5,6 @@ import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.domains.ActionCollection; import com.appsmith.server.domains.ActionCollection;
import com.appsmith.server.repositories.AppsmithRepository; import com.appsmith.server.repositories.AppsmithRepository;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.UpdateDefinition;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@ -50,6 +49,4 @@ public interface CustomActionCollectionRepositoryCE extends AppsmithRepository<A
String contextId, CreatorContextType contextType, AclPermission permission); String contextId, CreatorContextType contextType, AclPermission permission);
Flux<ActionCollection> findByPageIdAndViewMode(String pageId, boolean viewMode, AclPermission permission); Flux<ActionCollection> findByPageIdAndViewMode(String pageId, boolean viewMode, AclPermission permission);
Mono<Integer> updateById(String id, UpdateDefinition updateObj);
} }

View File

@ -7,14 +7,11 @@ import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.constants.FieldName; import com.appsmith.server.constants.FieldName;
import com.appsmith.server.domains.ActionCollection; import com.appsmith.server.domains.ActionCollection;
import com.appsmith.server.dtos.ActionCollectionDTO; import com.appsmith.server.dtos.ActionCollectionDTO;
import com.appsmith.server.exceptions.AppsmithError;
import com.appsmith.server.exceptions.AppsmithException;
import com.appsmith.server.helpers.ce.bridge.Bridge; import com.appsmith.server.helpers.ce.bridge.Bridge;
import com.appsmith.server.helpers.ce.bridge.BridgeQuery; import com.appsmith.server.helpers.ce.bridge.BridgeQuery;
import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.UpdateDefinition;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@ -243,12 +240,4 @@ public class CustomActionCollectionRepositoryCEImpl extends BaseAppsmithReposito
return queryBuilder().criteria(query).permission(permission).all(); return queryBuilder().criteria(query).permission(permission).all();
} }
@Override
public Mono<Integer> updateById(String id, UpdateDefinition updateObj) {
if (id == null) {
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.ID));
}
return queryBuilder().byId(id).updateFirst(updateObj);
}
} }

View File

@ -327,7 +327,7 @@ public class LayoutCollectionServiceCEImpl implements LayoutCollectionServiceCE
updateObj.set(path, actionCollectionDTO.getBody()); updateObj.set(path, actionCollectionDTO.getBody());
return actionCollectionRepository.updateById(dbActionCollection.getId(), updateObj); return actionCollectionRepository.updateByIdWithoutPermissionCheck(dbActionCollection.getId(), updateObj);
}); });
} }