diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java index afdb0fdebc..660a87e3ab 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java @@ -3,31 +3,15 @@ package com.appsmith.server.repositories.ce; import com.appsmith.server.acl.AclPermission; import com.appsmith.server.domains.User; import com.appsmith.server.repositories.AppsmithRepository; -import com.querydsl.core.types.dsl.StringPath; -import org.springframework.data.domain.Sort; -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import java.util.Optional; -import java.util.Set; - public interface CustomUserRepositoryCE extends AppsmithRepository { Mono findByEmail(String email, AclPermission aclPermission); - Flux findAllByEmails(Set emails); - Mono findByCaseInsensitiveEmail(String email); Mono findByEmailAndTenantId(String email, String tenantId); Mono isUsersEmpty(); - - Flux getAllByEmails( - Set emails, - Optional aclPermission, - int limit, - int skip, - StringPath sortKey, - Sort.Direction sortDirection); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java index a59505b874..b75ca77696 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java @@ -6,19 +6,15 @@ import com.appsmith.server.domains.QUser; import com.appsmith.server.domains.User; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import com.appsmith.server.repositories.CacheableRepositoryHelper; -import com.querydsl.core.types.dsl.StringPath; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.ReactiveMongoOperations; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.util.HashSet; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; @@ -41,14 +37,6 @@ public class CustomUserRepositoryCEImpl extends BaseAppsmithRepositoryImpl return queryOne(List.of(emailCriteria), aclPermission); } - @Override - public Flux findAllByEmails(Set emails) { - Criteria emailCriteria = where(fieldName(QUser.user.email)).in(emails); - Query query = new Query(); - query.addCriteria(emailCriteria); - return mongoOperations.find(query, User.class); - } - @Override public Mono findByCaseInsensitiveEmail(String email) { String findEmailRegex = String.format("^%s$", Pattern.quote(email)); @@ -90,19 +78,6 @@ public class CustomUserRepositoryCEImpl extends BaseAppsmithRepositoryImpl .map(count -> count == 0); } - @Override - public Flux getAllByEmails( - Set emails, - Optional aclPermission, - int limit, - int skip, - StringPath sortKey, - Sort.Direction sortDirection) { - Sort sortBy = Sort.by(sortDirection, fieldName(sortKey)); - Criteria emailCriteria = where(fieldName(QUser.user.email)).in(emails); - return queryAll(List.of(emailCriteria), Optional.empty(), aclPermission, sortBy, limit, skip); - } - protected Set getSystemGeneratedUserEmails() { Set systemGeneratedEmails = new HashSet<>(); systemGeneratedEmails.add(FieldName.ANONYMOUS_USER); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/UserRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/UserRepositoryCE.java index e28e5a5bf0..2c63a30018 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/UserRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/UserRepositoryCE.java @@ -3,14 +3,19 @@ package com.appsmith.server.repositories.ce; import com.appsmith.server.domains.User; import com.appsmith.server.repositories.BaseRepository; import com.appsmith.server.repositories.CustomUserRepository; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import java.util.Set; + public interface UserRepositoryCE extends BaseRepository, CustomUserRepository { Mono findByEmail(String email); Mono findByCaseInsensitiveEmail(String email); + Flux findAllByEmailIn(Set emails); + /** * This method returns the count of all users that are not deleted and are not system generated. * diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java index 59f60403a0..ad79d24a29 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java @@ -751,7 +751,7 @@ public class UserServiceCEImpl extends BaseService @Override public Flux getAllByEmails(Set emails, AclPermission permission) { - return repository.findAllByEmails(emails); + return repository.findAllByEmailIn(emails); } @Override diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/repositories/UserRepositoryTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/repositories/UserRepositoryTest.java index ddc82a6c12..689aa4dfa3 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/repositories/UserRepositoryTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/repositories/UserRepositoryTest.java @@ -1,6 +1,5 @@ package com.appsmith.server.repositories; -import com.appsmith.server.domains.QUser; import com.appsmith.server.domains.User; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.AfterEach; @@ -8,21 +7,16 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.data.domain.Sort; import org.springframework.test.annotation.DirtiesContext; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Optional; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; -import java.util.stream.IntStream; -import static com.appsmith.server.repositories.ce.BaseAppsmithRepositoryCEImpl.fieldName; import static org.junit.jupiter.api.Assertions.assertEquals; @SpringBootTest @@ -130,56 +124,16 @@ public class UserRepositoryTest { .limit(countOfUsersToBeCreated) .mapToObj(index -> uuid + "_" + index + "@gmail.com") .toList(); - List sortedEmails = new ArrayList<>(unsortedEmails); - Collections.sort(sortedEmails); - List createdUsers = unsortedEmails.stream() - .map(email -> { - User user = new User(); - user.setEmail(email); - return userRepository.save(user).block(); - }) - .toList(); + unsortedEmails.forEach(email -> { + User user = new User(); + user.setEmail(email); + userRepository.save(user).block(); + }); List allCreatedUsers = userRepository - .findAllByEmails(new HashSet<>(unsortedEmails)) + .findAllByEmailIn(new HashSet<>(unsortedEmails)) .collectList() .block(); assertEquals(countOfUsersToBeCreated, allCreatedUsers.size()); - - Sort sortByEmailAsc = Sort.by(Sort.Direction.ASC, fieldName(QUser.user.email)); - final int skip1 = 0; - int limit1 = 10; - List usersFrom0To10 = userRepository - .getAllByEmails( - new HashSet<>(unsortedEmails), - Optional.empty(), - limit1, - skip1, - QUser.user.email, - Sort.Direction.ASC) - .collectList() - .block(); - assertEquals(usersFrom0To10.size(), limit1); - List subList0To10 = sortedEmails.subList(skip1, skip1 + limit1); - IntStream.range(skip1, skip1 + limit1).forEach(index -> { - usersFrom0To10.get(index - skip1).getEmail().equals(subList0To10.get(index - skip1)); - }); - - final int skip2 = 9, limit2 = 10; - List usersFrom9To19 = userRepository - .getAllByEmails( - new HashSet<>(unsortedEmails), - Optional.empty(), - limit2, - skip2, - QUser.user.email, - Sort.Direction.ASC) - .collectList() - .block(); - assertEquals(usersFrom9To19.size(), limit2); - List subList9To19 = sortedEmails.subList(skip2, skip2 + limit2); - IntStream.range(skip2, skip2 + limit2).forEach(index -> { - usersFrom9To19.get(index - skip2).getEmail().equals(subList9To19.get(index - skip2)); - }); } }