From 4e6f80285e07ddc81727f05799e578020a878955 Mon Sep 17 00:00:00 2001 From: yoonho Date: Wed, 8 Apr 2026 15:05:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20swagger=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?parameter=EB=A5=BC=20=EC=9C=84=ED=95=9C=20pageable=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/controller/NoticeController.java | 11 +++---- .../core/dto/request/PageableRequest.java | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/earseo/core/dto/request/PageableRequest.java diff --git a/src/main/java/com/earseo/core/controller/NoticeController.java b/src/main/java/com/earseo/core/controller/NoticeController.java index f57abde..0252a87 100644 --- a/src/main/java/com/earseo/core/controller/NoticeController.java +++ b/src/main/java/com/earseo/core/controller/NoticeController.java @@ -3,15 +3,14 @@ import com.earseo.core.common.BaseResponse; import com.earseo.core.dto.request.NoticeCreateRequest; import com.earseo.core.dto.request.NoticeUpdateRequest; +import com.earseo.core.dto.request.PageableRequest; import com.earseo.core.dto.response.NoticeDeleteResponse; import com.earseo.core.dto.response.NoticePageResponse; import com.earseo.core.dto.response.NoticeResponse; import com.earseo.core.service.NoticeService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.web.PageableDefault; +import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -30,10 +29,10 @@ public ResponseEntity> getNotice( @GetMapping("/api/core/notice") public ResponseEntity> getNoticeList( - @PageableDefault(size = 10, sort = "id", direction = Sort.Direction.DESC) - Pageable pageable + @ParameterObject + PageableRequest pageableRequest ) { - return ResponseEntity.ok(BaseResponse.ok(noticeService.getNoticeList(pageable))); + return ResponseEntity.ok(BaseResponse.ok(noticeService.getNoticeList(pageableRequest.toPageable()))); } @PostMapping("/api/admin/core/notice") diff --git a/src/main/java/com/earseo/core/dto/request/PageableRequest.java b/src/main/java/com/earseo/core/dto/request/PageableRequest.java new file mode 100644 index 0000000..c500e36 --- /dev/null +++ b/src/main/java/com/earseo/core/dto/request/PageableRequest.java @@ -0,0 +1,33 @@ +package com.earseo.core.dto.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; + +@Getter +public class PageableRequest{ + @Schema(description = "페이지 번호 (0부터 시작)", example = "0", defaultValue = "0") + private int page = 0; + + @Schema(description = "페이지 크기", example = "10", defaultValue = "10") + private int size = 10; + + @Schema( + description = "정렬 기준", + example = "id,desc", + allowableValues = {"id,desc, id,asc"} + ) + private String sort = "id,desc"; + + public Pageable toPageable() { + String[] sortParts = sort.split(","); + String property = sortParts[0]; + Sort.Direction direction = sortParts.length > 1 + ? Sort.Direction.fromString(sortParts[1]) + : Sort.Direction.DESC; + + return PageRequest.of(page, size, Sort.by(direction, property)); + } +} From 3e92f69c8f8711795121205b52eaaaf88c7a8992 Mon Sep 17 00:00:00 2001 From: yoonho Date: Wed, 8 Apr 2026 15:07:07 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EA=B3=B5=EC=A7=80=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=ED=95=84=EB=93=9C=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/earseo/core/dto/etl/NoticePageItem.java | 10 +++++++++- .../com/earseo/core/repository/NoticeRepository.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/earseo/core/dto/etl/NoticePageItem.java b/src/main/java/com/earseo/core/dto/etl/NoticePageItem.java index 930a95d..50d0303 100644 --- a/src/main/java/com/earseo/core/dto/etl/NoticePageItem.java +++ b/src/main/java/com/earseo/core/dto/etl/NoticePageItem.java @@ -1,7 +1,15 @@ package com.earseo.core.dto.etl; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.time.LocalDateTime; + public record NoticePageItem( Long noticeId, - String title + String title, + @JsonFormat(pattern = "yyyy/MM/dd") + LocalDateTime createdAt, + @JsonFormat(pattern = "yyyy/MM/dd") + LocalDateTime updatedAt ) { } diff --git a/src/main/java/com/earseo/core/repository/NoticeRepository.java b/src/main/java/com/earseo/core/repository/NoticeRepository.java index ccc01cd..3f4b956 100644 --- a/src/main/java/com/earseo/core/repository/NoticeRepository.java +++ b/src/main/java/com/earseo/core/repository/NoticeRepository.java @@ -9,6 +9,6 @@ public interface NoticeRepository extends JpaRepository { - @Query("SELECT new com.earseo.core.dto.etl.NoticePageItem(n.id, n.title) FROM Notice n") + @Query("SELECT new com.earseo.core.dto.etl.NoticePageItem(n.id, n.title, n.createdAt, n.updatedAt) FROM Notice n") Slice findNoticeList(Pageable pageable); }