Skip to content

Commit 853e31f

Browse files
committed
search by slugs
1 parent 81a33ab commit 853e31f

File tree

6 files changed

+36
-18
lines changed

6 files changed

+36
-18
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,21 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
2929
@Aggregation(pipeline = {"{ $match: { gid: ?0 } }", "{ $project: { 'editingApplicationDSL.settings': 1, _id: 1, gid: 1, organizationId: 1, name: 1, applicationType: 1, applicationStatus: 1, publicToAll: 1, publicToMarketplace: 1, agencyProfile: 1, editingUserId: 1, lastEditedAt: 1, createdAt: 1, updatedAt: 1, createdBy: 1, modifiedBy: 1, _class: 1}}"})
3030
Flux<Application> findByGid(@Nonnull String gid);
3131

32+
@Aggregation(pipeline = {"{ $match: { slug: ?0 } }", "{ $project: { 'editingApplicationDSL.settings': 1, _id: 1, gid: 1, organizationId: 1, name: 1, applicationType: 1, applicationStatus: 1, publicToAll: 1, publicToMarketplace: 1, agencyProfile: 1, editingUserId: 1, lastEditedAt: 1, createdAt: 1, updatedAt: 1, createdBy: 1, modifiedBy: 1, _class: 1}}"})
33+
Flux<Application> findBySlug(@Nonnull String slug);
34+
3235
Mono<Long> countByOrganizationIdAndApplicationStatus(String organizationId, ApplicationStatus applicationStatus);
3336

3437
@Query("{$or : [{'publishedApplicationDSL.queries.datasourceId':?0},{'editingApplicationDSL.queries.datasourceId':?0}]}")
3538
Flux<Application> findByDatasourceId(String datasourceId);
3639

3740
Flux<Application> findByIdIn(Collection<String> ids);
3841
Flux<Application> findByGidIn(Collection<String> ids);
42+
Flux<Application> findBySlugIn(Collection<String> slugs);
3943

4044
Flux<Application> findByCreatedByAndIdIn(String userId, Collection<String> ids);
4145
Flux<Application> findByCreatedByAndGidIn(String userId, Collection<String> gids);
46+
Flux<Application> findByCreatedByAndSlugIn(String userId, Collection<String> slugs);
4247

4348
/**
4449
* Filter public applications from list of supplied IDs

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,13 @@ public Mono<Application> findByIdWithoutDsl(String id) {
6161
return Mono.error(new BizException(BizError.INVALID_PARAMETER, "INVALID_PARAMETER", FieldName.ID));
6262
}
6363

64-
if(FieldName.isGID(id))
65-
return Mono.from(repository.findByGid(id)).switchIfEmpty(Mono.error(new BizException(BizError.NO_RESOURCE_FOUND, "CANT_FIND_APPLICATION", id)));
66-
return repository.findById(id)
64+
return Mono.from(repository.findBySlug(id))
65+
.switchIfEmpty(
66+
Mono.defer(() -> {
67+
if (FieldName.isGID(id))
68+
return Mono.from(repository.findByGid(id));
69+
return repository.findById(id);
70+
}))
6771
.switchIfEmpty(Mono.error(new BizException(BizError.NO_RESOURCE_FOUND, "CANT_FIND_APPLICATION", id)));
6872
}
6973

@@ -124,7 +128,7 @@ public Mono<Long> countByOrganizationId(String orgId, ApplicationStatus applicat
124128
public Flux<Application> findByIdIn(List<String> applicationIds) {
125129
if(!applicationIds.isEmpty() && FieldName.isGID(applicationIds.get(0)))
126130
return repository.findByGidIn(applicationIds);
127-
return repository.findByIdIn(applicationIds);
131+
return repository.findBySlugIn(applicationIds).switchIfEmpty(repository.findByIdIn(applicationIds));
128132
}
129133

130134
@Override
@@ -280,7 +284,7 @@ public Mono<Set<String>> getPrivateApplicationIds(Collection<String> application
280284
.map(Application::getGid)
281285
.collect(Collectors.toSet());
282286

283-
return repository.findByCreatedByAndIdIn(userId, applicationIds)
287+
return repository.findByCreatedByAndSlugIn(userId, applicationIds).switchIfEmpty(repository.findByCreatedByAndIdIn(userId, applicationIds))
284288
.map(HasIdAndAuditing::getId)
285289
.collect(Collectors.toSet());
286290
}

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@ public interface OrganizationRepository extends ReactiveMongoRepository<Organiza
1616

1717
Flux<Organization> findByIdInAndState(Collection<String> id, OrganizationState state);
1818
Flux<Organization> findByGidInAndState(Collection<String> gid, OrganizationState state);
19+
Flux<Organization> findBySlugInAndState(Collection<String> slug, OrganizationState state);
1920
Flux<Organization> findByGid(String gid);
21+
Flux<Organization> findBySlug(String slug);
2022
Flux<Organization> findByState(OrganizationState state);
2123

2224
Mono<Organization> findByIdAndState(String id, OrganizationState state);
2325
Mono<Organization> findByGidAndState(String gid, OrganizationState state);
26+
Mono<Organization> findBySlugAndState(String slug, OrganizationState state);
2427

2528
Mono<Organization> findBySourceAndThirdPartyCompanyIdAndState(String source, String tpCompanyId, OrganizationState state);
2629

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public Mono<Organization> getById(String id) {
170170
if(FieldName.isGID(id))
171171
return repository.findByGidAndState(id, ACTIVE)
172172
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG, "INVALID_ORG_ID"));
173-
return repository.findByIdAndState(id, ACTIVE)
173+
return repository.findBySlugAndState(id, ACTIVE).switchIfEmpty(repository.findByIdAndState(id, ACTIVE))
174174
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG, "INVALID_ORG_ID"));
175175
}
176176

@@ -180,7 +180,7 @@ public Mono<OrganizationCommonSettings> getOrgCommonSettings(String orgId) {
180180
return repository.findByGidAndState(orgId, ACTIVE)
181181
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG, "INVALID_ORG_ID"))
182182
.map(Organization::getCommonSettings);
183-
return repository.findByIdAndState(orgId, ACTIVE)
183+
return repository.findBySlugAndState(orgId, ACTIVE).switchIfEmpty(repository.findByIdAndState(orgId, ACTIVE))
184184
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG, "INVALID_ORG_ID"))
185185
.map(Organization::getCommonSettings);
186186
}
@@ -189,7 +189,7 @@ public Mono<OrganizationCommonSettings> getOrgCommonSettings(String orgId) {
189189
public Flux<Organization> getByIds(Collection<String> ids) {
190190
if(!ids.isEmpty() && FieldName.isGID(ids.stream().findFirst().get()))
191191
return repository.findByGidInAndState(ids, ACTIVE);
192-
return repository.findByIdInAndState(ids, ACTIVE);
192+
return repository.findBySlugInAndState(ids, ACTIVE).switchIfEmpty(repository.findByIdInAndState(ids, ACTIVE));
193193
}
194194

195195
@Override
@@ -222,7 +222,7 @@ public Mono<Boolean> uploadLogo(String organizationId, Part filePart) {
222222
public Mono<Boolean> deleteLogo(String organizationId) {
223223
Mono<Organization> organizationMono;
224224
if(FieldName.isGID(organizationId)) organizationMono = repository.findByGidAndState(organizationId, ACTIVE);
225-
else organizationMono = repository.findByIdAndState(organizationId, ACTIVE);
225+
else organizationMono = repository.findBySlugAndState(organizationId, ACTIVE).switchIfEmpty(repository.findByIdAndState(organizationId, ACTIVE));
226226
return organizationMono
227227
.flatMap(organization -> {
228228
// delete from asset repo.

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/GidService.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,13 @@ public class GidService {
4040
private BundleRepository bundleRepository;
4141

4242
public Mono<String> convertApplicationIdToObjectId(String id) {
43-
if(FieldName.isGID(id)) {
44-
return applicationRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId);
45-
}
46-
return Mono.just(id);
43+
return applicationRepository.findBySlug(id).next().mapNotNull(HasIdAndAuditing::getId).switchIfEmpty(
44+
Mono.defer(() -> {
45+
if (FieldName.isGID(id)) {
46+
return applicationRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId);
47+
}
48+
return Mono.just(id);
49+
}));
4750
}
4851

4952
public Mono<String> convertDatasourceIdToObjectId(String id) {
@@ -54,10 +57,13 @@ public Mono<String> convertDatasourceIdToObjectId(String id) {
5457
}
5558

5659
public Mono<String> convertOrganizationIdToObjectId(String id) {
57-
if(FieldName.isGID(id)) {
58-
return organizationRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId);
59-
}
60-
return Mono.just(id);
60+
return organizationRepository.findBySlug(id).next().mapNotNull(HasIdAndAuditing::getId).switchIfEmpty(
61+
Mono.defer(() -> {
62+
if(FieldName.isGID(id)) {
63+
return organizationRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId);
64+
}
65+
return Mono.just(id);
66+
}));
6167
}
6268

6369
public Mono<String> convertGroupIdToObjectId(String id) {

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/common/TestRedisConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.concurrent.atomic.AtomicInteger;
1111

1212
@SuppressWarnings("UnstableApiUsage")
13-
@TestConfiguration
13+
//@TestConfiguration
1414
public class TestRedisConfiguration {
1515

1616
private static final AtomicInteger STATE = new AtomicInteger(0);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy