|
4 | 4 | import com.appsmith.server.constants.FieldName; |
5 | 5 | import com.appsmith.server.domains.Application; |
6 | 6 | import com.appsmith.server.domains.ApplicationPage; |
7 | | -import com.appsmith.server.domains.Page; |
8 | 7 | import com.appsmith.server.domains.QApplication; |
9 | 8 | import com.mongodb.client.result.UpdateResult; |
10 | 9 | import lombok.NonNull; |
11 | 10 | import lombok.extern.slf4j.Slf4j; |
| 11 | +import org.bson.types.ObjectId; |
12 | 12 | import org.springframework.beans.factory.annotation.Autowired; |
13 | 13 | import org.springframework.data.mongodb.core.ReactiveMongoOperations; |
14 | 14 | import org.springframework.data.mongodb.core.convert.MongoConverter; |
@@ -73,13 +73,30 @@ public Flux<Application> findByClonedFromApplicationId(String applicationId, Acl |
73 | 73 | } |
74 | 74 |
|
75 | 75 | @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); |
78 | 78 | return mongoOperations.updateFirst( |
79 | | - Query.query(getIdCriteria(application.getId())), |
| 79 | + Query.query(getIdCriteria(applicationId)), |
80 | 80 | new Update().addToSet(FieldName.PAGES, applicationPage), |
81 | 81 | Application.class |
82 | 82 | ); |
83 | 83 | } |
84 | 84 |
|
| 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 | + |
85 | 102 | } |
0 commit comments