From 903634ea38c88a8c4db6aeb6ce35e9eab256d81b Mon Sep 17 00:00:00 2001 From: bee-p Date: Wed, 20 Aug 2025 02:15:17 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=EC=B1=85=EA=B0=88=ED=94=BC=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EC=98=A4=EB=A5=98=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 - 책갈피의 위치정보가 없을 경우 null 체크의 부재로 오류 발생, 수정함 - 또한 location 정보가 dto 객체가 아닌 List으로 가고 있던 상황 발견, 인덱싱 접근으로 인한 버그 발생을 우려해 dto 객체로 변경함 --- .../dto/response/BookmarkLocationInfoDto.java | 9 +++++++++ .../server/dto/response/BookmarkResponse.java | 3 +-- .../codecozy/server/service/BookService.java | 18 +++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 server/src/main/java/com/codecozy/server/dto/response/BookmarkLocationInfoDto.java diff --git a/server/src/main/java/com/codecozy/server/dto/response/BookmarkLocationInfoDto.java b/server/src/main/java/com/codecozy/server/dto/response/BookmarkLocationInfoDto.java new file mode 100644 index 0000000..9e5d5b0 --- /dev/null +++ b/server/src/main/java/com/codecozy/server/dto/response/BookmarkLocationInfoDto.java @@ -0,0 +1,9 @@ +package com.codecozy.server.dto.response; + +// 책갈피 전체 조회 API - 위치 정보 응답을 보낼 때 사용 +public record BookmarkLocationInfoDto( + String placeName, + String address, + String latitude, + String longitude +) { } diff --git a/server/src/main/java/com/codecozy/server/dto/response/BookmarkResponse.java b/server/src/main/java/com/codecozy/server/dto/response/BookmarkResponse.java index 7c6e3b1..29270a9 100644 --- a/server/src/main/java/com/codecozy/server/dto/response/BookmarkResponse.java +++ b/server/src/main/java/com/codecozy/server/dto/response/BookmarkResponse.java @@ -1,11 +1,10 @@ package com.codecozy.server.dto.response; -import java.util.List; public record BookmarkResponse( String date, int markPage, int markPercent, - List location, + BookmarkLocationInfoDto location, String uuid ) {} diff --git a/server/src/main/java/com/codecozy/server/service/BookService.java b/server/src/main/java/com/codecozy/server/service/BookService.java index 5bc06fb..94917b7 100644 --- a/server/src/main/java/com/codecozy/server/service/BookService.java +++ b/server/src/main/java/com/codecozy/server/service/BookService.java @@ -1705,11 +1705,15 @@ public ResponseEntity getBookmark(Long memberId, String isbn) { List bookmarks = bookRecord.getBookmarks(); for (Bookmark bookmark : bookmarks) { // 위치 List 저장 - List location = new ArrayList<>(); - location.add(bookmark.getLocationInfo().getPlaceName()); - location.add(bookmark.getLocationInfo().getAddress()); - location.add(String.valueOf(bookmark.getLocationInfo().getLatitude())); - location.add(String.valueOf(bookmark.getLocationInfo().getLongitude())); + BookmarkLocationInfoDto locationDto = null; + LocationInfo locationInfo = bookmark.getLocationInfo(); + if (locationInfo != null) { + locationDto = new BookmarkLocationInfoDto( + locationInfo.getPlaceName(), + locationInfo.getAddress(), + String.valueOf(locationInfo.getLatitude()), + String.valueOf(locationInfo.getLongitude())); + } // 응답에 보낼 데이터들 int markPage = bookmark.getMarkPage(); @@ -1719,11 +1723,11 @@ public ResponseEntity getBookmark(Long memberId, String isbn) { if (bookRecord.getBookType() == BookType.PAPER_BOOK) { // 페이지 -> 퍼센트 계산 int percent = converterService.pageToPercent(markPage, book.getTotalPage()); - bookmarkList.add(new BookmarkResponse(dateStr, markPage, percent, location, bookmark.getUuid())); + bookmarkList.add(new BookmarkResponse(dateStr, markPage, percent, locationDto, bookmark.getUuid())); } else { // 전자책, 오디오북이면 // 퍼센트 -> 페이지 계산 int page = converterService.percentToPage(markPage, book.getTotalPage()); - bookmarkList.add(new BookmarkResponse(dateStr, page, markPage, location, bookmark.getUuid())); + bookmarkList.add(new BookmarkResponse(dateStr, page, markPage, locationDto, bookmark.getUuid())); } } From de16f2191d725e100d62a29ceb7c5daea8e7c355 Mon Sep 17 00:00:00 2001 From: Sowon Choi <68233618+bee-p@users.noreply.github.com> Date: Wed, 20 Aug 2025 02:29:35 +0900 Subject: [PATCH 2/3] =?UTF-8?q?docs:=20ci=20workflow=20jobs=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 보다 직관적으로 표시되기 위해 job의 이름 변경함 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 676d6af..76c9f0f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ on: branches: [ "release" ] jobs: - build: + test: runs-on: ubuntu-latest steps: From 643a9f7d986b1bc32092c0575d1339e56ee4add4 Mon Sep 17 00:00:00 2001 From: Sowon Choi <68233618+bee-p@users.noreply.github.com> Date: Wed, 20 Aug 2025 02:40:10 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20ci=20jobs=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PR rule을 설정할 때, CI 워크플로우 항목이 자동으로 잡히지 않아 이름 명시함 --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76c9f0f..bb52266 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,7 @@ on: jobs: test: + name: test runs-on: ubuntu-latest steps: