From d64a7c6581893c032875b299ab9e27c10c411cfb Mon Sep 17 00:00:00 2001 From: eldeoddt Date: Thu, 14 Aug 2025 17:29:01 +0900 Subject: [PATCH] =?UTF-8?q?[FIX]=20entity=20=EC=A1=B0=ED=9A=8C=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95=20#107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/dto/request/CategoryCreateRequestDTO.java | 1 - .../server/domain/todo/repository/TaskRepository.java | 9 ++++----- .../domain/todo/service/task/TaskCommandServiceImpl.java | 6 +++++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/indayvidual/server/domain/todo/dto/request/CategoryCreateRequestDTO.java b/src/main/java/com/indayvidual/server/domain/todo/dto/request/CategoryCreateRequestDTO.java index e9d7c71..7401154 100644 --- a/src/main/java/com/indayvidual/server/domain/todo/dto/request/CategoryCreateRequestDTO.java +++ b/src/main/java/com/indayvidual/server/domain/todo/dto/request/CategoryCreateRequestDTO.java @@ -1,7 +1,6 @@ package com.indayvidual.server.domain.todo.dto.request; import jakarta.validation.constraints.NotBlank; -import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/indayvidual/server/domain/todo/repository/TaskRepository.java b/src/main/java/com/indayvidual/server/domain/todo/repository/TaskRepository.java index d9b4581..de96118 100644 --- a/src/main/java/com/indayvidual/server/domain/todo/repository/TaskRepository.java +++ b/src/main/java/com/indayvidual/server/domain/todo/repository/TaskRepository.java @@ -20,16 +20,15 @@ public interface TaskRepository extends JpaRepository { List findByUserIdAndCategoryIdAndDueDate(Long userId, Long categoryId, LocalDate date); /** - * 특정 날짜와 카테고리 내에서 현재 등록된 Task의 최대 position을 조회합니다. + * 특정 날짜와 카테고리 내에서 현재 등록된 Task 중 최대 position인 Task을 조회합니다. *

* - 새로운 Task 생성 시 position 지정에 사용됩니다. - * - 값이 없으면 null을 반환합니다. * * @param categoryId - * @param date - * @return max position 값 (null 가능) + * @param dueDate + * @return max position 값의 task */ - Integer findTopByCategoryIdAndDueDateOrderByPositionDesc(Long categoryId, LocalDate date); + Optional findTopByCategoryIdAndDueDateOrderByPositionDesc(Long categoryId, LocalDate dueDate); List findAllByUserIdAndCategoryId(Long userId, Long categoryId); diff --git a/src/main/java/com/indayvidual/server/domain/todo/service/task/TaskCommandServiceImpl.java b/src/main/java/com/indayvidual/server/domain/todo/service/task/TaskCommandServiceImpl.java index ea77573..66b2cb3 100644 --- a/src/main/java/com/indayvidual/server/domain/todo/service/task/TaskCommandServiceImpl.java +++ b/src/main/java/com/indayvidual/server/domain/todo/service/task/TaskCommandServiceImpl.java @@ -66,7 +66,11 @@ public TaskResponseDTO createTask(Long userId, Long categoryId, TaskCreateReques * @return 새로운 할 일의 position */ private Integer generateNextPosition(Long categoryId, LocalDate date) { - Integer max = taskRepository.findTopByCategoryIdAndDueDateOrderByPositionDesc(categoryId, date); + Integer max = taskRepository + .findTopByCategoryIdAndDueDateOrderByPositionDesc(categoryId, date) + .map(Task::getPosition) + .orElse(null); // empty -> null + if (max == null) { log.debug("[TASK][generateNextPosition] max가 null이므로 기본값 0으로 시작합니다."); return 0;