Skip to content

Commit 691a168

Browse files
dragonpooludomikula
authored andcommitted
Add search by category feature
1 parent 5987c18 commit 691a168

File tree

12 files changed

+40
-23
lines changed

12 files changed

+40
-23
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,18 @@ public Map<String, Object> getEditingApplicationDSL() {
179179
return dsl;
180180
}
181181

182+
public String getCategory() {
183+
if(editingApplicationDSL == null || editingApplicationDSL.get("settings") == null) return "";
184+
Object settingsObject = editingApplicationDSL.get("settings");
185+
if (settingsObject instanceof Map) {
186+
@SuppressWarnings("unchecked")
187+
Map<String, Object> settings = (Map<String, Object>) editingApplicationDSL.get("settings");
188+
return (String) settings.get("category");
189+
} else {
190+
return "";
191+
}
192+
}
193+
182194
public Map<String, Object> getEditingApplicationDSLOrNull() {return editingApplicationDSL; }
183195

184196
public Object getLiveContainerSize() {

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
public interface ApplicationApiService {
1818
Mono<ApplicationView> create(ApplicationEndpoints.CreateApplicationRequest createApplicationRequest);
1919

20-
Flux<ApplicationInfoView> getRecycledApplications(String name);
20+
Flux<ApplicationInfoView> getRecycledApplications(String name, String category);
2121

2222
Mono<ApplicationView> delete(String applicationId);
2323

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ private Mono<Void> autoGrantPermissionsByFolderDefault(String applicationId, @Nu
169169
}
170170

171171
@Override
172-
public Flux<ApplicationInfoView> getRecycledApplications(String name) {
173-
return userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(null, ApplicationStatus.RECYCLED, false, name);
172+
public Flux<ApplicationInfoView> getRecycledApplications(String name, String category) {
173+
return userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(null, ApplicationStatus.RECYCLED, false, name, category);
174174
}
175175

176176
private Mono<Void> checkCurrentUserApplicationPermission(String applicationId, ResourceAction action) {

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ public Mono<ResponseView<Boolean>> restore(@PathVariable String applicationId) {
7878
}
7979

8080
@Override
81-
public Mono<ResponseView<List<ApplicationInfoView>>> getRecycledApplications(@RequestParam(required = false) String name) {
82-
return applicationApiService.getRecycledApplications(name)
81+
public Mono<ResponseView<List<ApplicationInfoView>>> getRecycledApplications(@RequestParam(required = false) String name, @RequestParam(required = false) String category) {
82+
return applicationApiService.getRecycledApplications(name, category)
8383
.collectList()
8484
.map(ResponseView::success);
8585
}
@@ -159,13 +159,14 @@ public Mono<ResponseView<UserHomepageView>> getUserHomePage(@RequestParam(requir
159159

160160
@Override
161161
public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestParam(required = false) Integer applicationType,
162-
@RequestParam(required = false) ApplicationStatus applicationStatus,
163-
@RequestParam(defaultValue = "true") boolean withContainerSize,
164-
@RequestParam(required = false) String name,
165-
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
166-
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
162+
@RequestParam(required = false) ApplicationStatus applicationStatus,
163+
@RequestParam(defaultValue = "true") boolean withContainerSize,
164+
@RequestParam(required = false) String name,
165+
@RequestParam(required = false) String category,
166+
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
167+
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
167168
ApplicationType applicationTypeEnum = applicationType == null ? null : ApplicationType.fromValue(applicationType);
168-
var flux = userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationTypeEnum, applicationStatus, withContainerSize, name).cache();
169+
var flux = userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationTypeEnum, applicationStatus, withContainerSize, name, category).cache();
169170
Mono<Long> countMono = flux.count();
170171
var flux1 = flux.skip((long) (pageNum - 1) * pageSize);
171172
if(pageSize > 0) flux1 = flux1.take(pageSize);

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public interface ApplicationEndpoints
7171
description = "List all the recycled Lowcoder Applications in the recycle bin where the authenticated or impersonated user has access."
7272
)
7373
@GetMapping("/recycle/list")
74-
public Mono<ResponseView<List<ApplicationInfoView>>> getRecycledApplications(@RequestParam(required = false) String name);
74+
public Mono<ResponseView<List<ApplicationInfoView>>> getRecycledApplications(@RequestParam(required = false) String name, @RequestParam(required = false) String category);
7575

7676
@Operation(
7777
tags = TAG_APPLICATION_MANAGEMENT,
@@ -167,6 +167,7 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
167167
@RequestParam(required = false) ApplicationStatus applicationStatus,
168168
@RequestParam(defaultValue = "true") boolean withContainerSize,
169169
@RequestParam(required = false) String name,
170+
@RequestParam(required = false) String category,
170171
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
171172
@RequestParam(required = false, defaultValue = "0") Integer pageSize);
172173

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, @Nullable String category);
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: 4 additions & 4 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, @Nullable String category) {
237+
return buildApplicationInfoViewTree(applicationType, name, category)
238238
.flatMap(tree -> {
239239
FolderNode<ApplicationInfoView, FolderInfoView> folderNode = tree.get(folderId);
240240
if (folderNode == null) {
@@ -278,13 +278,13 @@ private Mono<Tree<Object, Folder>> buildFolderTree(String orgId) {
278278
.map(folders -> new Tree<>(folders, Folder::getId, Folder::getParentFolderId, Collections.emptyList(), null, null));
279279
}
280280

281-
private Mono<Tree<ApplicationInfoView, FolderInfoView>> buildApplicationInfoViewTree(@Nullable ApplicationType applicationType, @Nullable String name) {
281+
private Mono<Tree<ApplicationInfoView, FolderInfoView>> buildApplicationInfoViewTree(@Nullable ApplicationType applicationType, @Nullable String name, @Nullable String category) {
282282

283283
Mono<OrgMember> orgMemberMono = sessionUserService.getVisitorOrgMemberCache()
284284
.cache();
285285

286286
Flux<ApplicationInfoView> applicationInfoViewFlux =
287-
userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationType, ApplicationStatus.NORMAL, false, name)
287+
userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationType, ApplicationStatus.NORMAL, false, name, category)
288288
.cache();
289289

290290
Mono<Map<String, String>> application2FolderMapMono = applicationInfoViewFlux

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,11 @@ public Mono<ResponseView<FolderInfoView>> update(@RequestBody Folder folder) {
7070
public Mono<PageResponseView<?>> getElements(@RequestParam(value = "id", required = false) String folderId,
7171
@RequestParam(value = "applicationType", required = false) ApplicationType applicationType,
7272
@RequestParam(required = false) String name,
73+
@RequestParam(required = false) String category,
7374
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
7475
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
7576
String objectId = gidService.convertFolderIdToObjectId(folderId);
76-
var flux = folderApiService.getElements(objectId, applicationType, name).cache();
77+
var flux = folderApiService.getElements(objectId, applicationType, name, category).cache();
7778
var countMono = flux.count();
7879
var flux1 = flux.skip((long) (pageNum - 1) * pageSize);
7980
if(pageSize > 0) flux1 = flux1.take(pageSize);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public interface FolderEndpoints
7171
public Mono<PageResponseView<?>> getElements(@RequestParam(value = "id", required = false) String folderId,
7272
@RequestParam(value = "applicationType", required = false) ApplicationType applicationType,
7373
@RequestParam(required = false) String name,
74+
@RequestParam(required = false) String category,
7475
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
7576
@RequestParam(required = false, defaultValue = "0") Integer pageSize);
7677

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public interface UserHomeApiService {
2424
Mono<UserHomepageView> getUserHomePageView(ApplicationType applicationType);
2525

2626
Flux<ApplicationInfoView> getAllAuthorisedApplications4CurrentOrgMember(@Nullable ApplicationType applicationType,
27-
@Nullable ApplicationStatus applicationStatus, boolean withContainerSize, @Nullable String name);
27+
@Nullable ApplicationStatus applicationStatus, boolean withContainerSize, @Nullable String name, @Nullable String category);
2828

2929
Flux<BundleInfoView> getAllAuthorisedBundles4CurrentOrgMember(@Nullable BundleStatus bundleStatus);
3030

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

Lines changed: 4 additions & 3 deletions
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, null).collectList())
161161
.map(tuple2 -> {
162162
Organization organization = tuple2.getT1();
163163
List<?> list = tuple2.getT2();
@@ -189,7 +189,7 @@ public Mono<UserHomepageView> getUserHomePageView(ApplicationType applicationTyp
189189

190190
@Override
191191
public Flux<ApplicationInfoView> getAllAuthorisedApplications4CurrentOrgMember(@Nullable ApplicationType applicationType,
192-
@Nullable ApplicationStatus applicationStatus, boolean withContainerSize, @Nullable String name) {
192+
@Nullable ApplicationStatus applicationStatus, boolean withContainerSize, @Nullable String name, @Nullable String category) {
193193

194194
return sessionUserService.getVisitorOrgMemberCache()
195195
.flatMapMany(orgMember -> {
@@ -204,7 +204,8 @@ public Flux<ApplicationInfoView> getAllAuthorisedApplications4CurrentOrgMember(@
204204
})
205205
.filter(application -> (isNull(applicationType) || application.getApplicationType() == applicationType.getValue())
206206
&& (isNull(applicationStatus) || application.getApplicationStatus() == applicationStatus)
207-
&& (isNull(name) || StringUtils.containsIgnoreCase(application.getName(), name)))
207+
&& (isNull(name) || StringUtils.containsIgnoreCase(application.getName(), name))
208+
&& (isNull(category) || StringUtils.containsIgnoreCase(application.getCategory(), category)))
208209
.cache()
209210
.collectList()
210211
.flatMapIterable(Function.identity());

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, null).collectList());
141141

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

0 commit comments

Comments
 (0)