From c496aac7dd631a45e14fbec5fac0eea821f237b9 Mon Sep 17 00:00:00 2001 From: bbbbooo Date: Wed, 25 Dec 2024 15:49:54 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor=20:=20=EB=AA=A9=ED=91=9C=EB=B3=84?= =?UTF-8?q?=20=ED=95=A0=EC=9D=BC=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C,=20?= =?UTF-8?q?=EA=B8=B0=EA=B0=84=EC=9D=B4=20=EC=95=88=EC=A7=80=EB=82=9C=20?= =?UTF-8?q?=ED=95=A0=EC=9D=BC=EC=9D=84=20=EC=A1=B0=ED=9A=8C=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/repository/GoalRepository.java | 22 +++++++++++++++++-- .../service/todo/impl/TodoServiceImpl.java | 10 +++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/codeit/todo/repository/GoalRepository.java b/src/main/java/com/codeit/todo/repository/GoalRepository.java index ddd6415..56f2b70 100644 --- a/src/main/java/com/codeit/todo/repository/GoalRepository.java +++ b/src/main/java/com/codeit/todo/repository/GoalRepository.java @@ -4,7 +4,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.time.LocalDate; import java.util.List; import java.util.Optional; @@ -13,7 +16,22 @@ public interface GoalRepository extends JpaRepository { Optional findByGoalIdAndUser_UserId(int goalId, int userId); - Slice findByUser_UserId(int userId, Pageable pageable); + @Query(""" +select g +from Goal g +join fetch g.todos t +where g.user.userId = :userId +and :today between t.startDate and t.endDate +""") + Slice findByUserAndHasTodos(@Param("userId") int userId, Pageable pageable, @Param("today") LocalDate today); - Slice findByGoalIdAndUser_UserId(Integer goalId, int userId, Pageable pageable); + @Query(""" +select g +from Goal g +join fetch g.todos t +where g.user.userId = :userId +and g.goalId = :lastGoalId +and :today between t.startDate and t.endDate +""") + Slice findByUserAndHasTodosAfterLastGoalId(@Param("lastGoalId") Integer lastGoalId, @Param("userId") int userId, Pageable pageable, @Param("today") LocalDate today); } diff --git a/src/main/java/com/codeit/todo/service/todo/impl/TodoServiceImpl.java b/src/main/java/com/codeit/todo/service/todo/impl/TodoServiceImpl.java index 007644e..928b798 100644 --- a/src/main/java/com/codeit/todo/service/todo/impl/TodoServiceImpl.java +++ b/src/main/java/com/codeit/todo/service/todo/impl/TodoServiceImpl.java @@ -111,19 +111,21 @@ public Slice findTodoListWithGoals(int userId, @Vali Pageable pageable = PageRequest.of(0, pageSize); Slice goals; + LocalDate today = LocalDate.now(); + if (Objects.isNull(request.lastGoalId()) || request.lastGoalId() <= 0) { - goals = goalRepository.findByUser_UserId(userId, pageable); + goals = goalRepository.findByUserAndHasTodos(userId, pageable, today); } else { - goals = goalRepository.findByGoalIdAndUser_UserId(request.lastGoalId(), userId, pageable); + goals = goalRepository.findByUserAndHasTodosAfterLastGoalId(request.lastGoalId(), userId, pageable, today); } List responses = goals.getContent().stream() .map(goal -> { - List todos = todoRepository.findTodosByGoalIdBetweenDates(goal.getGoalId(), LocalDate.now()); + List todos = goal.getTodos(); List todosResponses = todos.stream() .map(todo -> { - List completes = completeRepository.findByTodo_TodoId(todo.getTodoId()); + List completes = todo.getCompletes(); List completeResponses = completes.stream() .map(ReadCompleteResponse::from) From e65072b22106937435fe1393d708b07cf2af9993 Mon Sep 17 00:00:00 2001 From: bbbbooo Date: Wed, 25 Dec 2024 19:23:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix=20:=20=EC=B6=A9=EB=8F=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/codeit/todo/repository/GoalRepository.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/codeit/todo/repository/GoalRepository.java b/src/main/java/com/codeit/todo/repository/GoalRepository.java index 9293b16..cc2ec3e 100644 --- a/src/main/java/com/codeit/todo/repository/GoalRepository.java +++ b/src/main/java/com/codeit/todo/repository/GoalRepository.java @@ -14,10 +14,6 @@ public interface GoalRepository extends JpaRepository { List findByUser_UserId(int userId); - Slice findByUser_UserId(int userId, Pageable pageable); - - Slice findByGoalIdAndUser_UserId(Integer goalId, int userId, Pageable pageable); - Optional findByGoalIdAndUser_UserId(int goalId, int userId); Slice findByUser_UserId(@Param("userId") int userId, Pageable pageable);