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 a8e9f3d02..d62d0f485 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,6 +12,9 @@ @Repository public interface ApplicationHistorySnapshotRepository extends ReactiveMongoRepository { + @Query(value = "{ 'applicationId': ?0, 'context.operations': { $elemMatch: { 'compName': ?1 } } }", + 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); 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 a8845dd07..d09f331cd 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 @@ -12,11 +12,9 @@ public interface ApplicationHistorySnapshotService { Mono createHistorySnapshot(String applicationId, Map dsl, Map context, String userId); - Mono> listAllHistorySnapshotBriefInfo(String applicationId, PageRequest pageRequest); + Mono> listAllHistorySnapshotBriefInfo(String applicationId, String compName, PageRequest pageRequest); Mono countByApplicationId(String applicationId); Mono getHistorySnapshotDetail(String historySnapshotId); - - Mono getLastSnapshotByApp(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 25a140c24..138dbf0c6 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 @@ -39,10 +39,15 @@ public Mono createHistorySnapshot(String applicationId, Map> listAllHistorySnapshotBriefInfo(String applicationId, PageRequest pageRequest) { - return repository.findAllByApplicationId(applicationId, 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, 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")); } @Override @@ -58,13 +63,4 @@ public Mono getHistorySnapshotDetail(String historyS return repository.findById(historySnapshotId) .switchIfEmpty(deferredError(INVALID_HISTORY_SNAPSHOT, "INVALID_HISTORY_SNAPSHOT", historySnapshotId)); } - - @Override - public Mono getLastSnapshotByApp(String applicationId) { - ApplicationHistorySnapshot _default = new ApplicationHistorySnapshot(); - _default.setCreatedAt(Instant.ofEpochMilli(0)); - _default.setCreatedBy(""); - return repository.findAllByApplicationId(applicationId, PageRequest.of(0, 1).withSort(Direction.DESC, "createdAt")) - .switchIfEmpty(Mono.just(_default)).next(); - } } 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 f4c476e76..e23bac950 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,15 +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(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam String compName) { Pagination pagination = Pagination.of(page, size).check(); return sessionUserService.getVisitorId() .delayUntil(visitor -> resourcePermissionService.checkResourcePermissionWithError(visitor, applicationId, ResourceAction.EDIT_APPLICATIONS)) - .flatMap(__ -> applicationHistorySnapshotService.listAllHistorySnapshotBriefInfo(applicationId, - pagination.toPageRequest())) + .flatMap(__ -> applicationHistorySnapshotService.listAllHistorySnapshotBriefInfo(applicationId, compName, 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 9867ab3d1..961914836 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 @@ -2,6 +2,7 @@ import java.util.Map; +import jakarta.annotation.Nullable; import org.lowcoder.api.application.view.HistorySnapshotDslView; import org.lowcoder.api.framework.view.ResponseView; import org.lowcoder.infra.constant.NewUrl; @@ -39,7 +40,7 @@ public interface ApplicationHistorySnapshotEndpoints ) @GetMapping("/{applicationId}") public Mono>> listAllHistorySnapshotBriefInfo(@PathVariable String applicationId, - @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size); + @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(required = false ) @Nullable String compName); @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 d728dfc54..7f121292a 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, PageRequest.of(0, 5))) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, PageRequest.of(0, 5))) .assertNext(list -> { assertEquals(2, list.size()); @@ -64,7 +64,7 @@ public void testServiceMethods() { }) .verifyComplete(); - StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, PageRequest.of(1, 1))) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, 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, PageRequest.of(0, 5)) + StepVerifier.create(service.listAllHistorySnapshotBriefInfo(applicationId, null, PageRequest.of(0, 5)) .map(it -> it.get(0)) .map(HasIdAndAuditing::getId) .flatMap(id -> service.getHistorySnapshotDetail(id)))