From 1d873fd38e23b3648434761a199ac87bcef8775a Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 23:35:10 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20findBacklogs=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/TodoRepository.java | 27 +++++++++++++------ .../infra/repository/JpaTodoRepository.java | 10 +++++-- .../application/TodoBacklogServiceTest.java | 6 ++++- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 2f7053b..6c813a4 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -12,38 +12,49 @@ public interface TodoRepository { void deleteAllByUserId(Long userId); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); + Optional findById(Long todoId); + void delete(Todo todo); + Page findByUserIdAndCompletedStatusAndDifferentTodayDate(Long userId, TodayStatus todayStatus, LocalDate today, Pageable pageable); + Todo save(Todo todo); - Page findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( - Long userId, List types, List statuses, Pageable pageable); + + Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable); + Integer findMaxBacklogOrderByUserIdOrZero(Long userId); + Integer findMaxTodayOrderByUserIdOrZero(Long userId); + Integer findMinTodayOrderByUserIdOrZero(Long userId); + int findMaxBacklogOrderByIdIn(List ids); + int findMaxTodayOrderByIdIn(List ids); + Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); + List findByTypeAndTodayStatus(Type today, TodayStatus incomplete); + Integer findMinBacklogOrderByUserIdOrZero(Long userId); - default List findIncompleteTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + default List findIncompleteTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus) { return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( userId, type, todayDate, todayStatus); } - default List findCompletedTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + + default List findCompletedTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus) { return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( userId, type, todayDate, todayStatus); } - default Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable){ - return findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( - userId, types, statuses, pageable); - } default Page findHistories(Long userId, LocalDate today, Pageable pageable) { return findByUserIdAndCompletedStatusAndDifferentTodayDate(userId, TodayStatus.COMPLETED, today, pageable); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index f9f3b6f..72bbd26 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -8,13 +8,12 @@ import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; import java.time.LocalDate; import java.util.List; public interface JpaTodoRepository extends TodoRepository, JpaRepository { - @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND t.completedDateTime IS NOT NULL") - Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); @Query("SELECT COALESCE(MAX(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.backlogOrder IS NOT NULL") Integer findMaxBacklogOrderByUserIdOrZero(Long userId); @Query("SELECT COALESCE(MAX(t.todayOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.todayOrder IS NOT NULL") @@ -34,4 +33,11 @@ Page findByUserIdAndCompletedStatusAndDifferentTodayDate( @Param("todayDate") LocalDate todayDate, Pageable pageable ); + @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND (t.type IN :types AND (t.todayStatus NOT IN :statuses OR t.todayStatus IS NULL)) " + + "ORDER BY t.backlogOrder DESC") + Page findBacklogsByUserId( + @Param("userId") Long userId, + @Param("types") List types, + @Param("statuses") List statuses, + Pageable pageable); } diff --git a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java index c2ea682..85eae86 100644 --- a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java @@ -47,9 +47,13 @@ void getBacklogList_EmptyToday_Success() { //when BacklogListResponseDto backlogList = todoBacklogService.getBacklogList(userId, page, size); + for(BacklogResponseDto todo : backlogList.getBacklogs()){ + Long todoId = todo.getTodoId(); + System.out.println(todoId); + } //then - assertThat(backlogList.getBacklogs()).isEmpty(); + assertThat(backlogList.getBacklogs().size()).isEqualTo(0); assertThat(backlogList.getTotalPageCount()).isEqualTo(0); }