diff --git a/build.gradle b/build.gradle index c9a03190..6a48428a 100644 --- a/build.gradle +++ b/build.gradle @@ -88,6 +88,7 @@ dependencies { testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'org.mockito:mockito-inline:5.2.0' + testImplementation 'org.springframework.batch:spring-batch-test' // jwt decode implementation 'org.bouncycastle:bcprov-jdk15on:1.69' @@ -109,6 +110,10 @@ dependencies { // tink implementation 'com.google.crypto.tink:tink-android:1.4.0-rc1' implementation 'com.google.crypto.tink:apps-rewardedads:1.10.0' + + // spring batch + implementation 'org.springframework.boot:spring-boot-starter-batch' + } asciidoctor { diff --git a/src/main/java/com/yello/server/ServerApplication.java b/src/main/java/com/yello/server/ServerApplication.java index 91b6def6..59d267b5 100644 --- a/src/main/java/com/yello/server/ServerApplication.java +++ b/src/main/java/com/yello/server/ServerApplication.java @@ -1,10 +1,14 @@ package com.yello.server; +import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; +import org.springframework.batch.core.configuration.support.DefaultBatchConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @SpringBootApplication +@ConditionalOnMissingBean(value = DefaultBatchConfiguration.class, annotation = EnableBatchProcessing.class) public class ServerApplication { public static void main(String[] args) { diff --git a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java index 01d64b09..297f7cb4 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java @@ -133,4 +133,7 @@ List findAllByOtherGroupContainingYelloId(@Param("groupName") String group @Query("select u from User u " + "where LOWER(u.name) like LOWER(CONCAT('%', :name, '%'))") Page findAllByNameContaining(Pageable pageable, @Param("name") String name); + + Page findAllByPageable(Pageable pageable); + } diff --git a/src/main/java/com/yello/server/domain/user/repository/UserRepository.java b/src/main/java/com/yello/server/domain/user/repository/UserRepository.java index 2ef67768..c3f7eff2 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserRepository.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserRepository.java @@ -75,4 +75,6 @@ List findAllByOtherGroupContainingYelloId(String groupName, String keyword Page findAllByNameContaining(Pageable pageable, String name); void delete(User user); + + Page findAllByPageable(Pageable pageable); } diff --git a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java index aa1e8df4..d7acebae 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java @@ -192,4 +192,9 @@ public Page findAllByNameContaining(Pageable pageable, String name) { public void delete(User user) { userJpaRepository.delete(user); } + + @Override + public Page findAllByPageable(Pageable pageable) { + return userJpaRepository.findAllByPageable(pageable); + } } diff --git a/src/test/java/com/yello/server/domain/user/FakeUserRepository.java b/src/test/java/com/yello/server/domain/user/FakeUserRepository.java index 569a3e48..11e9ed20 100644 --- a/src/test/java/com/yello/server/domain/user/FakeUserRepository.java +++ b/src/test/java/com/yello/server/domain/user/FakeUserRepository.java @@ -321,4 +321,13 @@ public Page findAllByNameContaining(Pageable pageable, String name) { public void delete(User user) { data.remove(user); } + + @Override + public Page findAllByPageable(Pageable pageable) { + final List userList = data.stream() + .skip(pageable.getOffset()) + .limit(pageable.getPageSize()) + .toList(); + return new PageImpl<>(userList); + } }