diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationHistorySnapshotRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationHistorySnapshotRepository.java index d62d0f485..c745c91c1 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationHistorySnapshotRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationHistorySnapshotRepository.java @@ -12,11 +12,10 @@ @Repository public interface ApplicationHistorySnapshotRepository extends ReactiveMongoRepository { - @Query(value = "{ 'applicationId': ?0, 'context.operations': { $elemMatch: { 'compName': ?1 } } }", + @Query(value = "{ 'applicationId': ?0, $and: [{$or: [ { 'context.operations': { $elemMatch: { 'compName': ?1 } } }, { $expr: { $eq: [?1, null] } } ]}" + + ", {$or: [ { 'dsl.settings.themeId': ?2 }, { $expr: { $eq: [?2, null] } } ] } ] }", fields = "{applicationId : 1, context: 1, createdBy : 1, createdAt : 1}") - Flux findAllByApplicationIdAndCompName(String applicationId, String compName, Pageable pageable); - @Query(fields = "{applicationId : 1, context: 1, createdBy : 1, createdAt : 1}") - Flux findAllByApplicationId(String applicationId, Pageable pageable); + Flux findAllByApplicationId(String applicationId, String compName, String theme, Pageable pageable); Mono countByApplicationId(String applicationId); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationHistorySnapshotService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationHistorySnapshotService.java index d09f331cd..ebcdd5877 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationHistorySnapshotService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationHistorySnapshotService.java @@ -6,13 +6,14 @@ import org.lowcoder.domain.application.model.ApplicationHistorySnapshot; import org.springframework.data.domain.PageRequest; +import org.springframework.web.bind.annotation.RequestParam; import reactor.core.publisher.Mono; public interface ApplicationHistorySnapshotService { Mono createHistorySnapshot(String applicationId, Map dsl, Map context, String userId); - Mono> listAllHistorySnapshotBriefInfo(String applicationId, String compName, PageRequest pageRequest); + Mono> listAllHistorySnapshotBriefInfo(String applicationId, String compName, String theme, PageRequest pageRequest); Mono countByApplicationId(String applicationId); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/impl/ApplicationHistorySnapshotServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/impl/ApplicationHistorySnapshotServiceImpl.java index 138dbf0c6..4a65af3fc 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/impl/ApplicationHistorySnapshotServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/impl/ApplicationHistorySnapshotServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.data.domain.Sort.Direction; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; import reactor.core.publisher.Mono; @RequiredArgsConstructor @@ -39,15 +40,10 @@ public Mono createHistorySnapshot(String applicationId, Map> listAllHistorySnapshotBriefInfo(String applicationId, String compName, PageRequest pageRequest) { - if(compName == null || compName.isEmpty()) - return repository.findAllByApplicationId(applicationId, pageRequest.withSort(Direction.DESC, "id")) - .collectList() - .onErrorMap(Exception.class, e -> ofException(BizError.FETCH_HISTORY_SNAPSHOT_FAILURE, "FETCH_HISTORY_SNAPSHOT_FAILURE")); - else - return repository.findAllByApplicationIdAndCompName(applicationId, compName, pageRequest.withSort(Direction.DESC, "id")) - .collectList() - .onErrorMap(Exception.class, e -> ofException(BizError.FETCH_HISTORY_SNAPSHOT_FAILURE, "FETCH_HISTORY_SNAPSHOT_FAILURE")); + public Mono> listAllHistorySnapshotBriefInfo(String applicationId, String compName, String theme, PageRequest pageRequest) { + return repository.findAllByApplicationId(applicationId, compName, theme, pageRequest.withSort(Direction.DESC, "id")) + .collectList() + .onErrorMap(Exception.class, e -> ofException(BizError.FETCH_HISTORY_SNAPSHOT_FAILURE, "FETCH_HISTORY_SNAPSHOT_FAILURE")); } @Override diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotController.java index e23bac950..20cc7f880 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotController.java @@ -55,14 +55,14 @@ public Mono> create(@RequestBody ApplicationHistorySnapsho @Override public Mono>> listAllHistorySnapshotBriefInfo(@PathVariable String applicationId, - @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam String compName) { + @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam String compName, @RequestParam String theme) { Pagination pagination = Pagination.of(page, size).check(); return sessionUserService.getVisitorId() .delayUntil(visitor -> resourcePermissionService.checkResourcePermissionWithError(visitor, applicationId, ResourceAction.EDIT_APPLICATIONS)) - .flatMap(__ -> applicationHistorySnapshotService.listAllHistorySnapshotBriefInfo(applicationId, compName, pagination.toPageRequest())) + .flatMap(__ -> applicationHistorySnapshotService.listAllHistorySnapshotBriefInfo(applicationId, compName, theme, pagination.toPageRequest())) .flatMap(snapshotList -> { Mono> snapshotBriefInfoList = multiBuild(snapshotList, ApplicationHistorySnapshot::getCreatedBy, diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotEndpoints.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotEndpoints.java index 961914836..dcd66a9e8 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotEndpoints.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationHistorySnapshotEndpoints.java @@ -40,7 +40,8 @@ public interface ApplicationHistorySnapshotEndpoints ) @GetMapping("/{applicationId}") public Mono>> listAllHistorySnapshotBriefInfo(@PathVariable String applicationId, - @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(required = false ) @Nullable String compName); + @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, + @RequestParam(required = false ) @Nullable String compName, @RequestParam(required = false ) @Nullable String theme); @Operation( tags = TAG_APPLICATION_HISTORY_MANAGEMENT, diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/impl/ApplicationHistorySnapshotServiceTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/impl/ApplicationHistorySnapshotServiceTest.java index 7f121292a..faa0e16b7 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/impl/ApplicationHistorySnapshotServiceTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/impl/ApplicationHistorySnapshotServiceTest.java @@ -44,7 +44,7 @@ public void testServiceMethods() { .verifyComplete(); - StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, PageRequest.of(0, 5))) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, null, PageRequest.of(0, 5))) .assertNext(list -> { assertEquals(2, list.size()); @@ -64,7 +64,7 @@ public void testServiceMethods() { }) .verifyComplete(); - StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, PageRequest.of(1, 1))) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, null, PageRequest.of(1, 1))) .assertNext(list -> { assertEquals(1, list.size()); ApplicationHistorySnapshot one = list.get(0); @@ -75,7 +75,7 @@ public void testServiceMethods() { .verifyComplete(); - StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, PageRequest.of(0, 5)) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, null, PageRequest.of(0, 5)) .map(it -> it.get(0)) .map(HasIdAndAuditing::getId) .flatMap(id -> service.getHistorySnapshotDetail(id)))