Skip to content

Commit 7d5fb6b

Browse files
Thomasrludomikula
Thomasr
authored andcommitted
Add name param to datasource, libraryquery list endpoint
1 parent fbfa78b commit 7d5fb6b

File tree

10 files changed

+42
-39
lines changed

10 files changed

+42
-39
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/datasource/DatasourceApiService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.lowcoder.domain.permission.model.ResourceRole;
77
import org.lowcoder.domain.plugin.client.dto.GetPluginDynamicConfigRequestDTO;
88
import org.lowcoder.sdk.models.DatasourceTestResult;
9+
import org.springframework.web.bind.annotation.RequestParam;
910
import reactor.core.publisher.Flux;
1011
import reactor.core.publisher.Mono;
1112

@@ -15,11 +16,11 @@
1516
public interface DatasourceApiService {
1617
Mono<Datasource> create(Datasource datasource);
1718

18-
Flux<Datasource> listJsDatasourcePlugins(String applicationId);
19+
Flux<Datasource> listJsDatasourcePlugins(String applicationId, String name, String type);
1920

20-
Flux<DatasourceView> listAppDataSources(String appId);
21+
Flux<DatasourceView> listAppDataSources(String appId, String name, String type);
2122

22-
Flux<DatasourceView> listOrgDataSources(String orgId);
23+
Flux<DatasourceView> listOrgDataSources(String orgId, String name, String type);
2324

2425
Mono<Datasource> update(String datasourceId, Datasource updatedDatasource);
2526

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/datasource/DatasourceApiServiceImpl.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,27 +84,33 @@ public Mono<Datasource> create(Datasource datasource) {
8484
}
8585

8686
@Override
87-
public Flux<Datasource> listJsDatasourcePlugins(String applicationId) {
87+
public Flux<Datasource> listJsDatasourcePlugins(String applicationId, String name, String type) {
8888
return applicationService.findById(applicationId)
8989
.delayUntil(application -> applicationApiService.checkPermissionWithReadableErrorMsg(applicationId, READ_APPLICATIONS))
9090
.flatMapMany(application -> datasourceService.getByOrgId(application.getOrganizationId()))
9191
.filter(datasource -> datasource.getDatasourceStatus() == DatasourceStatus.NORMAL)
92-
.filter(datasource -> datasourceMetaInfoService.isJsDatasourcePlugin(datasource.getType()))
93-
.delayUntil(datasource -> jsDatasourceHelper.processDynamicQueryConfig(datasource))
92+
.filter(datasource -> datasourceMetaInfoService.isJsDatasourcePlugin(datasource.getType()) &&
93+
(name == null || datasource.getName().toLowerCase().contains(name.toLowerCase())) &&
94+
(type == null || datasource.getType().equals(type))
95+
)
96+
.delayUntil(jsDatasourceHelper::processDynamicQueryConfig)
9497
.doOnNext(datasource -> datasource.setDetailConfig(null));
9598
}
9699

97100
@Override
98-
public Flux<DatasourceView> listAppDataSources(String appId) {
101+
public Flux<DatasourceView> listAppDataSources(String appId, String name, String type) {
99102
return applicationService.findById(appId)
100-
.flatMapMany(application -> listOrgDataSources(application.getOrganizationId()));
103+
.flatMapMany(application -> listOrgDataSources(application.getOrganizationId(), name, type));
101104
}
102105

103106
@Override
104-
public Flux<DatasourceView> listOrgDataSources(String orgId) {
107+
public Flux<DatasourceView> listOrgDataSources(String orgId, String name, String type) {
105108
// get datasource
106109
Flux<Datasource> datasourceFlux = datasourceService.getByOrgId(orgId)
107-
.filter(datasource -> datasource.getDatasourceStatus() == DatasourceStatus.NORMAL)
110+
.filter(datasource -> datasource.getDatasourceStatus() == DatasourceStatus.NORMAL &&
111+
(name == null || datasource.getName().toLowerCase().contains(name.toLowerCase())) &&
112+
(type == null || datasource.getType().equals(type))
113+
)
108114
.cache();
109115

110116
// get user-datasource permissions

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/datasource/DatasourceController.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,9 @@ public Mono<ResponseView<DatasourceStructure>> getStructure(@PathVariable String
116116
* name, type... and the plugin definition of it, excluding the detail configs such as the connection uri, password...
117117
*/
118118
@Override
119-
public Mono<ResponseView<List<Datasource>>> listJsDatasourcePlugins(@RequestParam("appId") String applicationId) {
119+
public Mono<ResponseView<List<Datasource>>> listJsDatasourcePlugins(@RequestParam("appId") String applicationId, @RequestParam String name, @RequestParam String type) {
120120
String objectId = gidService.convertApplicationIdToObjectId(applicationId);
121-
return datasourceApiService.listJsDatasourcePlugins(objectId)
121+
return datasourceApiService.listJsDatasourcePlugins(objectId, name, type)
122122
.collectList()
123123
.map(ResponseView::success);
124124
}
@@ -139,24 +139,24 @@ public Mono<ResponseView<List<Object>>> getPluginDynamicConfig(
139139

140140
@SneakyThrows
141141
@Override
142-
public Mono<ResponseView<List<DatasourceView>>> listOrgDataSources(@RequestParam(name = "orgId") String orgId) {
142+
public Mono<ResponseView<List<DatasourceView>>> listOrgDataSources(@RequestParam(name = "orgId") String orgId, @RequestParam String name, @RequestParam String type) {
143143
if (StringUtils.isBlank(orgId)) {
144144
return ofError(BizError.INVALID_PARAMETER, "ORG_ID_EMPTY");
145145
}
146146
String objectId = gidService.convertOrganizationIdToObjectId(orgId);
147-
return datasourceApiService.listOrgDataSources(objectId)
147+
return datasourceApiService.listOrgDataSources(objectId, name, type)
148148
.collectList()
149149
.map(ResponseView::success);
150150
}
151151

152152
@Override
153-
public Mono<ResponseView<List<DatasourceView>>> listAppDataSources(@RequestParam(name = "appId") String applicationId) {
153+
public Mono<ResponseView<List<DatasourceView>>> listAppDataSources(@RequestParam(name = "appId") String applicationId, @RequestParam String name, @RequestParam String type) {
154154
if (StringUtils.isBlank(applicationId)) {
155155
return ofError(BizError.INVALID_PARAMETER, "INVALID_APP_ID");
156156
}
157157
String objectId = gidService.convertApplicationIdToObjectId(applicationId);
158158

159-
return datasourceApiService.listAppDataSources(objectId)
159+
return datasourceApiService.listAppDataSources(objectId, name, type)
160160
.collectList()
161161
.map(ResponseView::success);
162162
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/datasource/DatasourceEndpoints.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public Mono<ResponseView<DatasourceStructure>> getStructure(@PathVariable String
9999
description = "Retrieve a list of node service plugins available within Lowcoder."
100100
)
101101
@GetMapping("/jsDatasourcePlugins")
102-
public Mono<ResponseView<List<Datasource>>> listJsDatasourcePlugins(@RequestParam("appId") String applicationId);
102+
public Mono<ResponseView<List<Datasource>>> listJsDatasourcePlugins(@RequestParam("appId") String applicationId, @RequestParam String name, @RequestParam String type);
103103

104104
/**
105105
* Proxy the request to the node service, besides, add the "extra" information from the data source config stored in the mongodb if exists to
@@ -123,7 +123,7 @@ public Mono<ResponseView<List<Object>>> getPluginDynamicConfig(
123123
)
124124
@JsonView(JsonViews.Public.class)
125125
@GetMapping("/listByOrg")
126-
public Mono<ResponseView<List<DatasourceView>>> listOrgDataSources(@RequestParam(name = "orgId") String orgId);
126+
public Mono<ResponseView<List<DatasourceView>>> listOrgDataSources(@RequestParam(name = "orgId") String orgId, @RequestParam String name, @RequestParam String type);
127127

128128
@Operation(
129129
tags = TAG_DATASOURCE_MANAGEMENT,
@@ -134,7 +134,7 @@ public Mono<ResponseView<List<Object>>> getPluginDynamicConfig(
134134
@Deprecated
135135
@JsonView(JsonViews.Public.class)
136136
@GetMapping("/listByApp")
137-
public Mono<ResponseView<List<DatasourceView>>> listAppDataSources(@RequestParam(name = "appId") String applicationId);
137+
public Mono<ResponseView<List<DatasourceView>>> listAppDataSources(@RequestParam(name = "appId") String applicationId, @RequestParam String name, @RequestParam String type);
138138

139139
@Operation(
140140
tags = TAG_DATASOURCE_PERMISSIONS,

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/query/LibraryQueryApiService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.List;
1010

1111
public interface LibraryQueryApiService {
12-
Mono<List<LibraryQueryView>> listLibraryQueries();
12+
Mono<List<LibraryQueryView>> listLibraryQueries(String name);
1313

1414
Mono<LibraryQueryView> create(LibraryQuery libraryQuery);
1515

@@ -20,7 +20,7 @@ public interface LibraryQueryApiService {
2020
Mono<LibraryQueryRecordMetaView> publish(String libraryQueryId, LibraryQueryPublishRequest libraryQueryPublishRequest);
2121

2222
@SuppressWarnings("ConstantConditions")
23-
Mono<List<LibraryQueryAggregateView>> dropDownList();
23+
Mono<List<LibraryQueryAggregateView>> dropDownList(String name);
2424

2525
Mono<QueryExecutionResult> executeLibraryQueryFromJs(ServerWebExchange exchange, LibraryQueryRequestFromJs request);
2626

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/query/LibraryQueryApiServiceImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ public class LibraryQueryApiServiceImpl implements LibraryQueryApiService {
7171
private int port;
7272

7373
@Override
74-
public Mono<List<LibraryQueryView>> listLibraryQueries() {
74+
public Mono<List<LibraryQueryView>> listLibraryQueries(String name) {
7575
return orgDevChecker.checkCurrentOrgDev()
7676
.then(sessionUserService.getVisitorOrgMemberCache())
7777
.flatMapMany(orgMember -> getByOrgIdWithDatasourcePermissions(orgMember.getOrgId()))
78+
.filter(libraryQuery -> libraryQuery.getName().toLowerCase().contains(name.toLowerCase()))
7879
.collectList()
7980
.flatMap(libraryQueries -> ViewBuilder.multiBuild(libraryQueries,
8081
LibraryQuery::getCreatedBy,
@@ -152,9 +153,10 @@ public Mono<LibraryQueryRecordMetaView> publish(String libraryQueryId, LibraryQu
152153

153154
@Override
154155
@SuppressWarnings("ConstantConditions")
155-
public Mono<List<LibraryQueryAggregateView>> dropDownList() {
156+
public Mono<List<LibraryQueryAggregateView>> dropDownList(String name) {
156157
Mono<List<LibraryQuery>> libraryQueryListMono = sessionUserService.getVisitorOrgMemberCache()
157158
.flatMapMany(orgMember -> getByOrgIdWithDatasourcePermissions(orgMember.getOrgId()))
159+
.filter(libraryQuery -> libraryQuery.getName().toLowerCase().contains(name.toLowerCase()))
158160
.collectList()
159161
.cache();
160162

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/query/LibraryQueryController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.springframework.beans.factory.annotation.Autowired;
1717
import org.springframework.web.bind.annotation.PathVariable;
1818
import org.springframework.web.bind.annotation.RequestBody;
19+
import org.springframework.web.bind.annotation.RequestParam;
1920
import org.springframework.web.bind.annotation.RestController;
2021

2122
import reactor.core.publisher.Mono;
@@ -34,14 +35,14 @@ public class LibraryQueryController implements LibraryQueryEndpoints
3435
private GidService gidService;
3536

3637
@Override
37-
public Mono<ResponseView<List<LibraryQueryAggregateView>>> dropDownList() {
38-
return libraryQueryApiService.dropDownList()
38+
public Mono<ResponseView<List<LibraryQueryAggregateView>>> dropDownList(@RequestParam String name) {
39+
return libraryQueryApiService.dropDownList(name)
3940
.map(ResponseView::success);
4041
}
4142

4243
@Override
43-
public Mono<ResponseView<List<LibraryQueryView>>> list() {
44-
return libraryQueryApiService.listLibraryQueries()
44+
public Mono<ResponseView<List<LibraryQueryView>>> list(@RequestParam String name) {
45+
return libraryQueryApiService.listLibraryQueries(name)
4546
.map(ResponseView::success);
4647
}
4748

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/query/LibraryQueryEndpoints.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,7 @@
1111
import org.lowcoder.api.query.view.LibraryQueryView;
1212
import org.lowcoder.api.query.view.UpsertLibraryQueryRequest;
1313
import org.lowcoder.domain.query.model.LibraryQuery;
14-
import org.springframework.web.bind.annotation.DeleteMapping;
15-
import org.springframework.web.bind.annotation.GetMapping;
16-
import org.springframework.web.bind.annotation.PathVariable;
17-
import org.springframework.web.bind.annotation.PostMapping;
18-
import org.springframework.web.bind.annotation.PutMapping;
19-
import org.springframework.web.bind.annotation.RequestBody;
20-
import org.springframework.web.bind.annotation.RequestMapping;
21-
import org.springframework.web.bind.annotation.RestController;
14+
import org.springframework.web.bind.annotation.*;
2215

2316
import io.swagger.v3.oas.annotations.Operation;
2417
import reactor.core.publisher.Mono;
@@ -36,7 +29,7 @@ public interface LibraryQueryEndpoints
3629
description = "Retrieve Library Queries in a dropdown format within Lowcoder, suitable for selection in user interfaces."
3730
)
3831
@GetMapping("/dropDownList")
39-
public Mono<ResponseView<List<LibraryQueryAggregateView>>> dropDownList();
32+
public Mono<ResponseView<List<LibraryQueryAggregateView>>> dropDownList(@RequestParam String name);
4033

4134
@Operation(
4235
tags = TAG_LIBRARY_QUERY_MANAGEMENT,
@@ -45,7 +38,7 @@ public interface LibraryQueryEndpoints
4538
description = "Retrieve a list of Library Queries for a specific Organization within Lowcoder."
4639
)
4740
@GetMapping("/listByOrg")
48-
public Mono<ResponseView<List<LibraryQueryView>>> list();
41+
public Mono<ResponseView<List<LibraryQueryView>>> list(@RequestParam String name);
4942

5043
@Operation(
5144
tags = TAG_LIBRARY_QUERY_MANAGEMENT,

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/datasource/DatasourceApiServiceIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void testListOrgDatasource() {
5454
.flatMap(permissionItemView -> datasourceApiService.updatePermission(permissionItemView.getPermissionId(), VIEWER))
5555
// create mysql05
5656
.then(datasourceApiService.create(buildMysqlDatasource("mysql05")))
57-
.then(datasourceApiService.listOrgDataSources("org01").collectList());
57+
.then(datasourceApiService.listOrgDataSources("org01", null, null).collectList());
5858

5959
StepVerifier.create(datasourceListMono)
6060
.assertNext(datasourceViews -> {

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/query/LibraryQueryApiServiceIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void beforeEach() {
4747
public void testListLibraryQueries() {
4848
Mono<List<LibraryQueryView>> listMono = datasourceApiService.create(DatasourceApiServiceIntegrationTest.buildMysqlDatasource("mysql06"))
4949
.flatMap(datasource -> libraryQueryApiService.create(buildLibraryQuery("query01", datasource.getId())))
50-
.then(libraryQueryApiService.listLibraryQueries());
50+
.then(libraryQueryApiService.listLibraryQueries(null));
5151

5252
StepVerifier.create(listMono)
5353
.assertNext(libraryQueryViews -> {

0 commit comments

Comments
 (0)