Skip to content

Commit 25f4da0

Browse files
committed
Added pagination to folder elements endpoint
1 parent 2c2c6bb commit 25f4da0

File tree

6 files changed

+15
-9
lines changed

6 files changed

+15
-9
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderApiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public interface FolderApiService {
2727

2828
Mono<Void> upsertLastViewTime(@Nullable String folderId);
2929

30-
Flux<?> getElements(@Nullable String folderId, @Nullable ApplicationType applicationType, @Nullable String name);
30+
Flux<?> getElements(@Nullable String folderId, @Nullable ApplicationType applicationType, @Nullable String name, Integer pageNum, Integer pageSize);
3131

3232
Mono<Void> grantPermission(String folderId, Set<String> userIds, Set<String> groupIds, ResourceRole role);
3333

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderApiServiceImpl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,8 @@ public Mono<Void> upsertLastViewTime(@Nullable String folderId) {
233233
* @return flux of {@link ApplicationInfoView} or {@link FolderInfoView}
234234
*/
235235
@Override
236-
public Flux<?> getElements(@Nullable String folderId, @Nullable ApplicationType applicationType, @Nullable String name) {
237-
return buildApplicationInfoViewTree(applicationType, name)
236+
public Flux<?> getElements(@Nullable String folderId, @Nullable ApplicationType applicationType, @Nullable String name, Integer pageNum, Integer pageSize) {
237+
var retMono = buildApplicationInfoViewTree(applicationType, name)
238238
.flatMap(tree -> {
239239
FolderNode<ApplicationInfoView, FolderInfoView> folderNode = tree.get(folderId);
240240
if (folderNode == null) {
@@ -264,7 +264,9 @@ public Flux<?> getElements(@Nullable String folderId, @Nullable ApplicationType
264264
});
265265
})
266266
.flatMapIterable(tuple -> tuple.getT1().getChildren())
267-
.map(node -> {
267+
.skip(pageNum * pageSize);
268+
if(pageSize > 0) retMono = retMono.take(pageSize);
269+
return retMono.map(node -> {
268270
if (node instanceof ElementNode<ApplicationInfoView, FolderInfoView> elementNode) {
269271
return elementNode.getSelf();
270272
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,11 @@ public Mono<ResponseView<FolderInfoView>> update(@RequestBody Folder folder) {
7070
@Override
7171
public Mono<ResponseView<List<?>>> getElements(@RequestParam(value = "id", required = false) String folderId,
7272
@RequestParam(value = "applicationType", required = false) ApplicationType applicationType,
73-
@RequestParam(required = false) String name) {
73+
@RequestParam(required = false) String name,
74+
@RequestParam(required = false, defaultValue = "0") Integer pageNum,
75+
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
7476
String objectId = gidService.convertFolderIdToObjectId(folderId);
75-
return folderApiService.getElements(objectId, applicationType, name)
77+
return folderApiService.getElements(objectId, applicationType, name, pageNum, pageSize)
7678
.collectList()
7779
.delayUntil(__ -> folderApiService.upsertLastViewTime(objectId))
7880
.map(ResponseView::success);

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderEndpoints.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ public interface FolderEndpoints
7070
@GetMapping("/elements")
7171
public Mono<ResponseView<List<?>>> getElements(@RequestParam(value = "id", required = false) String folderId,
7272
@RequestParam(value = "applicationType", required = false) ApplicationType applicationType,
73-
@RequestParam(required = false) String name);
73+
@RequestParam(required = false) String name,
74+
@RequestParam(required = false, defaultValue = "0") Integer pageNum,
75+
@RequestParam(required = false, defaultValue = "0") Integer pageSize);
7476

7577
@Operation(
7678
tags = TAG_FOLDER_MANAGEMENT,

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public Mono<UserHomepageView> getUserHomePageView(ApplicationType applicationTyp
157157
}
158158

159159
return organizationService.getById(currentOrgId)
160-
.zipWith(folderApiService.getElements(null, applicationType, null).collectList())
160+
.zipWith(folderApiService.getElements(null, applicationType, null, 0, 0).collectList())
161161
.map(tuple2 -> {
162162
Organization organization = tuple2.getT1();
163163
List<?> list = tuple2.getT2();

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/FolderApiServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public void updateByGid() {
137137
public void move() {
138138

139139
Mono<? extends List<?>> mono = folderApiService.move("app01", "folder02")
140-
.then(folderApiService.getElements("folder02", null, null).collectList());
140+
.then(folderApiService.getElements("folder02", null, null, 0, 0).collectList());
141141

142142
StepVerifier.create(mono)
143143
.assertNext(list -> {

0 commit comments

Comments
 (0)