chore: Migrate NewPageRepositoryCEImpl to use Bridge APIs (#31693)
This commit is contained in:
parent
32640eea0b
commit
0d206ebfbd
|
|
@ -88,14 +88,6 @@ public final class BridgeQuery<T extends BaseDomain> extends Criteria {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Please use {@code Bridge.or} instead. This API looks and reads very confusing and unintuitive, so is explicitly
|
||||
* disabled.
|
||||
*/
|
||||
public BridgeQuery<T> or(BridgeQuery<T> ignoredUnused) {
|
||||
throw new UnsupportedOperationException("Not supported");
|
||||
}
|
||||
|
||||
public BridgeQuery<T> and(BridgeQuery<T> item) {
|
||||
checks.add(new Criteria().andOperator(item));
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@ package com.appsmith.server.repositories.ce;
|
|||
import com.appsmith.external.models.BranchAwareDomain;
|
||||
import com.appsmith.server.acl.AclPermission;
|
||||
import com.appsmith.server.constants.FieldName;
|
||||
import com.appsmith.server.domains.Layout;
|
||||
import com.appsmith.server.domains.NewPage;
|
||||
import com.appsmith.server.dtos.PageDTO;
|
||||
import com.appsmith.server.helpers.ce.bridge.Bridge;
|
||||
import com.appsmith.server.helpers.ce.bridge.BridgeQuery;
|
||||
import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl;
|
||||
import com.appsmith.server.repositories.CacheableRepositoryHelper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -19,7 +22,6 @@ import reactor.core.publisher.Flux;
|
|||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
|
@ -44,44 +46,35 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
|
||||
@Override
|
||||
public Flux<NewPage> findByApplicationId(String applicationId, AclPermission aclPermission) {
|
||||
Criteria applicationIdCriteria = where(NewPage.Fields.applicationId).is(applicationId);
|
||||
return queryBuilder()
|
||||
.criteria(applicationIdCriteria)
|
||||
.criteria(Bridge.equal(NewPage.Fields.applicationId, applicationId))
|
||||
.permission(aclPermission)
|
||||
.all();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<NewPage> findByApplicationId(String applicationId, Optional<AclPermission> permission) {
|
||||
Criteria applicationIdCriteria = where(NewPage.Fields.applicationId).is(applicationId);
|
||||
return queryBuilder()
|
||||
.criteria(applicationIdCriteria)
|
||||
.criteria(Bridge.equal(NewPage.Fields.applicationId, applicationId))
|
||||
.permission(permission.orElse(null))
|
||||
.all();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<NewPage> findByApplicationIdAndNonDeletedEditMode(String applicationId, AclPermission aclPermission) {
|
||||
Criteria applicationIdCriteria = where(NewPage.Fields.applicationId).is(applicationId);
|
||||
// In case a page has been deleted in edit mode, but still exists in deployed mode, NewPage object would exist.
|
||||
// To handle this, only fetch non-deleted pages
|
||||
Criteria activeEditModeCriteria =
|
||||
where(NewPage.Fields.unpublishedPage_deletedAt).is(null);
|
||||
return queryBuilder()
|
||||
.criteria(applicationIdCriteria, activeEditModeCriteria)
|
||||
.permission(aclPermission)
|
||||
.all();
|
||||
BridgeQuery<NewPage> q = Bridge.<NewPage>equal(NewPage.Fields.applicationId, applicationId)
|
||||
// In case a page has been deleted in edit mode, but still exists in deployed mode, NewPage object would
|
||||
// exist. To handle this, only fetch non-deleted pages
|
||||
.isNull(NewPage.Fields.unpublishedPage_deletedAt);
|
||||
return queryBuilder().criteria(q).permission(aclPermission).all();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<NewPage> findByIdAndLayoutsIdAndViewMode(
|
||||
String id, String layoutId, AclPermission aclPermission, Boolean viewMode) {
|
||||
String layoutsIdKey;
|
||||
String layoutsKey;
|
||||
final String layoutsKey;
|
||||
|
||||
List<Criteria> criteria = new ArrayList<>();
|
||||
Criteria idCriterion = getIdCriteria(id);
|
||||
criteria.add(idCriterion);
|
||||
final BridgeQuery<NewPage> q = Bridge.equal(NewPage.Fields.id, id);
|
||||
|
||||
if (Boolean.TRUE.equals(viewMode)) {
|
||||
layoutsKey = NewPage.Fields.publishedPage_layouts;
|
||||
|
|
@ -90,58 +83,39 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
|
||||
// In case a page has been deleted in edit mode, but still exists in deployed mode, NewPage object would
|
||||
// exist. To handle this, only fetch non-deleted pages
|
||||
Criteria deletedCriterion =
|
||||
where(NewPage.Fields.unpublishedPage_deletedAt).is(null);
|
||||
criteria.add(deletedCriterion);
|
||||
q.isNull(NewPage.Fields.unpublishedPage_deletedAt);
|
||||
}
|
||||
layoutsIdKey = layoutsKey + "." + FieldName.ID;
|
||||
|
||||
Criteria layoutCriterion = where(layoutsIdKey).is(layoutId);
|
||||
criteria.add(layoutCriterion);
|
||||
q.equal(layoutsKey + "." + Layout.Fields.id, layoutId);
|
||||
|
||||
return queryBuilder().criteria(criteria).permission(aclPermission).one();
|
||||
return queryBuilder().criteria(q).permission(aclPermission).one();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<NewPage> findByNameAndViewMode(String name, AclPermission aclPermission, Boolean viewMode) {
|
||||
|
||||
List<Criteria> criteria = new ArrayList<>();
|
||||
|
||||
Criteria nameCriterion = getNameCriterion(name, viewMode);
|
||||
criteria.add(nameCriterion);
|
||||
final BridgeQuery<NewPage> q = getNameCriterion(name, viewMode);
|
||||
|
||||
if (Boolean.FALSE.equals(viewMode)) {
|
||||
// In case a page has been deleted in edit mode, but still exists in deployed mode, NewPage object would
|
||||
// exist. To handle this, only fetch non-deleted pages
|
||||
Criteria deletedCriterion =
|
||||
where(NewPage.Fields.unpublishedPage_deletedAt).is(null);
|
||||
criteria.add(deletedCriterion);
|
||||
q.isNull(NewPage.Fields.unpublishedPage_deletedAt);
|
||||
}
|
||||
|
||||
return queryBuilder().criteria(criteria).permission(aclPermission).one();
|
||||
return queryBuilder().criteria(q).permission(aclPermission).one();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<NewPage> findByNameAndApplicationIdAndViewMode(
|
||||
String name, String applicationId, AclPermission aclPermission, Boolean viewMode) {
|
||||
|
||||
List<Criteria> criteria = new ArrayList<>();
|
||||
|
||||
Criteria nameCriterion = getNameCriterion(name, viewMode);
|
||||
criteria.add(nameCriterion);
|
||||
|
||||
Criteria applicationIdCriterion = where(NewPage.Fields.applicationId).is(applicationId);
|
||||
criteria.add(applicationIdCriterion);
|
||||
BridgeQuery<NewPage> q = getNameCriterion(name, viewMode).equal(NewPage.Fields.applicationId, applicationId);
|
||||
|
||||
if (Boolean.FALSE.equals(viewMode)) {
|
||||
// In case a page has been deleted in edit mode, but still exists in deployed mode, NewPage object would
|
||||
// exist. To handle this, only fetch non-deleted pages
|
||||
Criteria deletedCriteria =
|
||||
where(NewPage.Fields.unpublishedPage_deletedAt).is(null);
|
||||
criteria.add(deletedCriteria);
|
||||
q.isNull(NewPage.Fields.unpublishedPage_deletedAt);
|
||||
}
|
||||
|
||||
return queryBuilder().criteria(criteria).permission(aclPermission).one();
|
||||
return queryBuilder().criteria(q).permission(aclPermission).one();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -161,24 +135,17 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
NewPage.Fields.publishedPage_slug,
|
||||
NewPage.Fields.publishedPage_customSlug);
|
||||
|
||||
Criteria idsCriterion = where("id").in(ids);
|
||||
|
||||
return this.queryBuilder()
|
||||
.criteria(idsCriterion)
|
||||
.criteria(Bridge.in(NewPage.Fields.id, ids))
|
||||
.fields(includedFields)
|
||||
.permission(aclPermission)
|
||||
.all();
|
||||
}
|
||||
|
||||
private Criteria getNameCriterion(String name, Boolean viewMode) {
|
||||
String nameKey;
|
||||
|
||||
if (Boolean.TRUE.equals(viewMode)) {
|
||||
nameKey = NewPage.Fields.publishedPage_name;
|
||||
} else {
|
||||
nameKey = NewPage.Fields.unpublishedPage_name;
|
||||
}
|
||||
return where(nameKey).is(name);
|
||||
private BridgeQuery<NewPage> getNameCriterion(String name, Boolean viewMode) {
|
||||
return Bridge.equal(
|
||||
Boolean.TRUE.equals(viewMode) ? NewPage.Fields.publishedPage_name : NewPage.Fields.unpublishedPage_name,
|
||||
name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -197,22 +164,18 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
public Mono<NewPage> findPageByBranchNameAndDefaultPageId(
|
||||
String branchName, String defaultPageId, AclPermission permission) {
|
||||
final String defaultResources = NewPage.Fields.defaultResources;
|
||||
Criteria defaultPageIdCriteria =
|
||||
where(defaultResources + "." + FieldName.PAGE_ID).is(defaultPageId);
|
||||
Criteria branchCriteria =
|
||||
where(defaultResources + "." + FieldName.BRANCH_NAME).is(branchName);
|
||||
return queryBuilder()
|
||||
.criteria(defaultPageIdCriteria, branchCriteria)
|
||||
.permission(permission)
|
||||
.one();
|
||||
final BridgeQuery<NewPage> q =
|
||||
// defaultPageIdCriteria
|
||||
Bridge.<NewPage>equal(defaultResources + "." + FieldName.PAGE_ID, defaultPageId)
|
||||
// branchCriteria
|
||||
.equal(defaultResources + "." + FieldName.BRANCH_NAME, branchName);
|
||||
return queryBuilder().criteria(q).permission(permission).one();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<NewPage> findSlugsByApplicationIds(List<String> applicationIds, AclPermission aclPermission) {
|
||||
Criteria applicationIdCriteria = where(NewPage.Fields.applicationId).in(applicationIds);
|
||||
|
||||
return queryBuilder()
|
||||
.criteria(applicationIdCriteria)
|
||||
.criteria(Bridge.in(NewPage.Fields.applicationId, applicationIds))
|
||||
.fields(
|
||||
NewPage.Fields.unpublishedPage_slug,
|
||||
NewPage.Fields.unpublishedPage_customSlug,
|
||||
|
|
@ -233,13 +196,19 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
public Mono<NewPage> findByGitSyncIdAndDefaultApplicationId(
|
||||
String defaultApplicationId, String gitSyncId, Optional<AclPermission> permission) {
|
||||
final String defaultResources = BranchAwareDomain.Fields.defaultResources;
|
||||
Criteria defaultAppIdCriteria =
|
||||
where(defaultResources + "." + FieldName.APPLICATION_ID).is(defaultApplicationId);
|
||||
Criteria gitSyncIdCriteria = where(FieldName.GIT_SYNC_ID).is(gitSyncId);
|
||||
return queryBuilder()
|
||||
.criteria(defaultAppIdCriteria, gitSyncIdCriteria)
|
||||
.permission(permission.orElse(null))
|
||||
.first();
|
||||
|
||||
// defaultAppIdCriteria
|
||||
final BridgeQuery<NewPage> q =
|
||||
Bridge.equal(defaultResources + "." + NewPage.Fields.applicationId, defaultApplicationId);
|
||||
|
||||
if (gitSyncId != null) {
|
||||
// gitSyncIdCriteria
|
||||
q.equal(NewPage.Fields.gitSyncId, gitSyncId);
|
||||
} else {
|
||||
q.isNull(NewPage.Fields.gitSyncId);
|
||||
}
|
||||
|
||||
return queryBuilder().criteria(q).permission(permission.orElse(null)).first();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -277,9 +246,8 @@ public class CustomNewPageRepositoryCEImpl extends BaseAppsmithRepositoryImpl<Ne
|
|||
@Override
|
||||
public Flux<NewPage> findAllByApplicationIdsWithoutPermission(
|
||||
List<String> applicationIds, List<String> includeFields) {
|
||||
Criteria applicationCriteria = Criteria.where(FieldName.APPLICATION_ID).in(applicationIds);
|
||||
return queryBuilder()
|
||||
.criteria(applicationCriteria)
|
||||
.criteria(Bridge.in(FieldName.APPLICATION_ID, applicationIds))
|
||||
.fields(includeFields)
|
||||
.all();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user