Skip to content

Commit 112e907

Browse files
Merge branch 'release'
2 parents b184197 + 5756e6b commit 112e907

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomApplicationRepository.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.appsmith.server.acl.AclPermission;
44
import com.appsmith.server.domains.Application;
5-
import com.appsmith.server.domains.Page;
65
import com.mongodb.client.result.UpdateResult;
76
import reactor.core.publisher.Flux;
87
import reactor.core.publisher.Mono;
@@ -21,6 +20,8 @@ public interface CustomApplicationRepository extends AppsmithRepository<Applicat
2120

2221
Flux<Application> findByClonedFromApplicationId(String applicationId, AclPermission permission);
2322

24-
Mono<UpdateResult> addPageToApplication(Application application, Page page, boolean isDefault);
23+
Mono<UpdateResult> addPageToApplication(String applicationId, String pageId, boolean isDefault);
24+
25+
Mono<UpdateResult> setDefaultPage(String applicationId, String pageId);
2526

2627
}

app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/CustomApplicationRepositoryImpl.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import com.appsmith.server.constants.FieldName;
55
import com.appsmith.server.domains.Application;
66
import com.appsmith.server.domains.ApplicationPage;
7-
import com.appsmith.server.domains.Page;
87
import com.appsmith.server.domains.QApplication;
98
import com.mongodb.client.result.UpdateResult;
109
import lombok.NonNull;
1110
import lombok.extern.slf4j.Slf4j;
11+
import org.bson.types.ObjectId;
1212
import org.springframework.beans.factory.annotation.Autowired;
1313
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
1414
import org.springframework.data.mongodb.core.convert.MongoConverter;
@@ -73,13 +73,30 @@ public Flux<Application> findByClonedFromApplicationId(String applicationId, Acl
7373
}
7474

7575
@Override
76-
public Mono<UpdateResult> addPageToApplication(Application application, Page page, boolean isDefault) {
77-
final ApplicationPage applicationPage = new ApplicationPage(page.getId(), isDefault);
76+
public Mono<UpdateResult> addPageToApplication(String applicationId, String pageId, boolean isDefault) {
77+
final ApplicationPage applicationPage = new ApplicationPage(pageId, isDefault);
7878
return mongoOperations.updateFirst(
79-
Query.query(getIdCriteria(application.getId())),
79+
Query.query(getIdCriteria(applicationId)),
8080
new Update().addToSet(FieldName.PAGES, applicationPage),
8181
Application.class
8282
);
8383
}
8484

85+
@Override
86+
public Mono<UpdateResult> setDefaultPage(String applicationId, String pageId) {
87+
final Mono<UpdateResult> setAllAsNonDefaultMono = mongoOperations.updateFirst(
88+
Query.query(getIdCriteria(applicationId)).addCriteria(Criteria.where("pages.isDefault").is(true)),
89+
new Update().set("pages.$.isDefault", false),
90+
Application.class
91+
);
92+
93+
final Mono<UpdateResult> setDefaultMono = mongoOperations.updateFirst(
94+
Query.query(getIdCriteria(applicationId)).addCriteria(Criteria.where("pages._id").is(new ObjectId(pageId))),
95+
new Update().set("pages.$.isDefault", true),
96+
Application.class
97+
);
98+
99+
return setAllAsNonDefaultMono.then(setDefaultMono);
100+
}
101+
85102
}

app/server/appsmith-server/src/main/java/com/appsmith/server/services/ApplicationPageServiceImpl.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public Mono<Page> createPage(Page page) {
124124
*/
125125
@Override
126126
public Mono<UpdateResult> addPageToApplication(Application application, Page page, Boolean isDefault) {
127-
return applicationRepository.addPageToApplication(application, page, isDefault)
127+
return applicationRepository.addPageToApplication(application.getId(), page.getId(), isDefault)
128128
.doOnSuccess(result -> {
129129
if (result.getModifiedCount() != 1) {
130130
log.error("Add page to application didn't update anything, probably because application wasn't found.");
@@ -195,14 +195,11 @@ public Mono<Application> makePageDefault(String applicationId, String pageId) {
195195
})
196196
.then(applicationService.findById(applicationId))
197197
.switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.APPLICATION_ID, applicationId)))
198-
.flatMap(application -> {
199-
List<ApplicationPage> pages = application.getPages();
200-
201-
// We are guaranteed to find the pageId in this list.
202-
pages.forEach(page -> page.setIsDefault(page.getId().equals(pageId)));
203-
204-
return applicationService.save(application);
205-
});
198+
.flatMap(application ->
199+
applicationRepository
200+
.setDefaultPage(applicationId, pageId)
201+
.then(applicationService.getById(applicationId))
202+
);
206203
}
207204

208205
@Override

static/demo.gif

-17.7 MB
Loading

0 commit comments

Comments
 (0)