Skip to content

Commit 9ab8b51

Browse files
Thomasludomikula
Thomas
authored andcommitted
add gid to Datasource
1 parent f9bcac6 commit 9ab8b51

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/model/Datasource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class Datasource extends HasIdAndAuditing {
7171
LOWCODER_API.setDetailConfig(LowcoderApiDatasourceConfig.INSTANCE);
7272
}
7373

74+
private String gid;
7475
private String name;
7576
private String type;
7677
private String organizationId;

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/model/DatasourceDO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
@NoArgsConstructor
2525
@AllArgsConstructor
2626
public class DatasourceDO extends HasIdAndAuditing {
27-
27+
private String gid;
2828
private String name;
2929
private String type;
3030
private String organizationId;

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceDORepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@
66
import reactor.core.publisher.Flux;
77
import reactor.core.publisher.Mono;
88

9+
import java.util.Collection;
10+
911
public interface DatasourceDORepository extends ReactiveMongoRepository<DatasourceDO, String> {
1012

1113
Flux<DatasourceDO> findAllByOrganizationId(String organizationId);
1214

1315
Mono<DatasourceDO> findByOrganizationIdAndTypeAndCreationSource(String organizationId, String type, int creationSource);
1416

1517
Mono<Long> countByOrganizationId(String organizationId);
18+
Flux<DatasourceDO> findByGid(String gid);
19+
Flux<DatasourceDO> findAllByGidIn(Collection<String> gid);
1620
}

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceRepository.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import static org.lowcoder.sdk.util.JsonUtils.fromJsonMap;
44
import static org.lowcoder.sdk.util.JsonUtils.toJson;
55

6-
import java.util.Collection;
7-
import java.util.HashSet;
8-
import java.util.Set;
6+
import java.util.*;
97
import java.util.function.Function;
108

119
import org.apache.commons.collections4.CollectionUtils;
@@ -18,6 +16,7 @@
1816
import org.lowcoder.domain.plugin.client.DatasourcePluginClient;
1917
import org.lowcoder.domain.plugin.service.DatasourceMetaInfoService;
2018
import org.lowcoder.infra.mongo.MongoUpsertHelper;
19+
import org.lowcoder.sdk.constants.FieldName;
2120
import org.lowcoder.sdk.models.DatasourceConnectionConfig;
2221
import org.lowcoder.sdk.models.HasIdAndAuditing;
2322
import org.lowcoder.sdk.models.JsDatasourceConnectionConfig;
@@ -56,6 +55,9 @@ public class DatasourceRepository {
5655
private JsDatasourceHelper jsDatasourceHelper;
5756

5857
public Mono<Datasource> findById(String datasourceId) {
58+
if(FieldName.isGID(datasourceId))
59+
return Mono.from(repository.findByGid(datasourceId))
60+
.flatMap(this::convertToDomainObjectAndDecrypt);
5961
return repository.findById(datasourceId)
6062
.flatMap(this::convertToDomainObjectAndDecrypt);
6163
}
@@ -67,8 +69,24 @@ public Mono<Datasource> findWorkspacePredefinedDatasourceByOrgIdAndType(String o
6769
}
6870

6971
public Flux<Datasource> findAllById(Iterable<String> ids) {
70-
return repository.findAllById(ids)
72+
List<String> idList = new ArrayList<>();
73+
List<String> gidList = new ArrayList<>();
74+
75+
for (String id : ids) {
76+
if (FieldName.isGID(id)) {
77+
gidList.add(id);
78+
} else {
79+
idList.add(id);
80+
}
81+
}
82+
83+
Flux<Datasource> idFlux = idList.isEmpty() ? Flux.empty() : repository.findAllById(idList)
7184
.flatMap(this::convertToDomainObjectAndDecrypt);
85+
86+
Flux<Datasource> gidFlux = gidList.isEmpty() ? Flux.empty() : repository.findAllByGidIn(gidList)
87+
.flatMap(this::convertToDomainObjectAndDecrypt);
88+
89+
return Flux.merge(idFlux, gidFlux);
7290
}
7391

7492
public Flux<Datasource> findAllByOrganizationId(String orgId) {
@@ -92,8 +110,12 @@ public Flux<String> retainNoneExistAndNonCurrentOrgDatasourceIds(Collection<Stri
92110
if (CollectionUtils.isEmpty(datasourceIds)) {
93111
return Flux.empty();
94112
}
95-
return repository.findAllById(new HashSet<>(datasourceIds))
96-
.collectList()
113+
Flux<DatasourceDO> mixedMono;
114+
if(FieldName.isGID(datasourceIds.stream().findFirst().orElseThrow()))
115+
mixedMono = repository.findAllByGidIn(new HashSet<>(datasourceIds));
116+
else
117+
mixedMono = repository.findAllById(new HashSet<>(datasourceIds));
118+
return mixedMono.collectList()
97119
.map(existDatasources -> {
98120
Set<String> result = new HashSet<>(datasourceIds);
99121
existDatasources.stream()
@@ -114,6 +136,7 @@ private Mono<Datasource> convertToDomainObjectAndDecrypt(DatasourceDO datasource
114136

115137
Mono<Datasource> datasourceMono = Mono.fromSupplier(() -> {
116138
Datasource result = new Datasource();
139+
result.setGid(datasourceDO.getGid());
117140
result.setName(datasourceDO.getName());
118141
result.setType(datasourceDO.getType());
119142
result.setOrganizationId(datasourceDO.getOrganizationId());
@@ -156,6 +179,7 @@ private Mono<DatasourceDO> encryptDataAndConvertToDataObject(Datasource datasour
156179

157180
return Mono.fromSupplier(() -> {
158181
DatasourceDO result = new DatasourceDO();
182+
result.setGid(datasource.getGid());
159183
result.setName(datasource.getName());
160184
result.setType(datasource.getType());
161185
result.setOrganizationId(datasource.getOrganizationId());

0 commit comments

Comments
 (0)