diff --git a/src/main/java/org/runimo/runimo/common/response/PageData.java b/src/main/java/org/runimo/runimo/common/response/PageData.java index 5d354728..8e25c0d0 100644 --- a/src/main/java/org/runimo/runimo/common/response/PageData.java +++ b/src/main/java/org/runimo/runimo/common/response/PageData.java @@ -1,17 +1,21 @@ package org.runimo.runimo.common.response; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +@Schema @Getter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PageData { + @Schema(description = "페이지 데이터 목록") private List items; + @Schema(description = "페이지 정보") private PageInfo pagination; public static PageData of(List items, PageInfo pagination) { diff --git a/src/main/java/org/runimo/runimo/common/response/SuccessPageResponse.java b/src/main/java/org/runimo/runimo/common/response/SuccessPageResponse.java index 1b4539cc..e8db9ffa 100644 --- a/src/main/java/org/runimo/runimo/common/response/SuccessPageResponse.java +++ b/src/main/java/org/runimo/runimo/common/response/SuccessPageResponse.java @@ -1,13 +1,16 @@ package org.runimo.runimo.common.response; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.NoArgsConstructor; import org.runimo.runimo.exceptions.code.CustomResponseCode; +@Schema(description = "성공 페이지 응답 DTO") @Getter @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) public class SuccessPageResponse extends Response { + @Schema(description = "페이지 데이터") private PageData payload; public SuccessPageResponse(boolean success, String message, String code, diff --git a/src/main/java/org/runimo/runimo/records/controller/RecordController.java b/src/main/java/org/runimo/runimo/records/controller/RecordController.java index a79490bd..320cd981 100644 --- a/src/main/java/org/runimo/runimo/records/controller/RecordController.java +++ b/src/main/java/org/runimo/runimo/records/controller/RecordController.java @@ -17,7 +17,6 @@ import org.runimo.runimo.records.controller.request.RecordUpdateRequest; import org.runimo.runimo.records.enums.RecordHttpResponse; import org.runimo.runimo.records.service.dto.RecordSimpleView; -import org.runimo.runimo.records.service.dto.RecordSimpleViewResponse; import org.runimo.runimo.records.service.dto.WeeklyRecordStatResponse; import org.runimo.runimo.records.service.dto.WeeklyStatQuery; import org.runimo.runimo.records.service.usecases.RecordCreateUsecase; @@ -30,6 +29,7 @@ import org.runimo.runimo.records.service.usecases.dtos.RecordSaveResponse; import org.runimo.runimo.user.controller.UserId; import org.runimo.runimo.user.enums.UserHttpResponseCode; +import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; @@ -146,11 +146,10 @@ public ResponseEntity> queryMonthlyRe } @Operation(summary = "개인 기록 페이지네이션 전체 조회", description = "개인 기록 페이지네이션 조회") - @ApiResponse(responseCode = "200", description = "기록 조회 성공", - content = @Content(schema = @Schema(implementation = RecordSimpleViewResponse.class))) + @ApiResponse(responseCode = "200", description = "기록 조회 성공") @GetMapping("/me") public ResponseEntity> getMyRecordList( - @ModelAttribute MyRecordPageRequest request, + @ParameterObject @ModelAttribute MyRecordPageRequest request, @UserId Long userId ) { return ResponseEntity.ok( diff --git a/src/main/java/org/runimo/runimo/records/controller/request/MyRecordPageRequest.java b/src/main/java/org/runimo/runimo/records/controller/request/MyRecordPageRequest.java index 9a61897e..f645ce53 100644 --- a/src/main/java/org/runimo/runimo/records/controller/request/MyRecordPageRequest.java +++ b/src/main/java/org/runimo/runimo/records/controller/request/MyRecordPageRequest.java @@ -1,5 +1,7 @@ package org.runimo.runimo.records.controller.request; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; import java.time.LocalDate; @@ -7,20 +9,25 @@ import lombok.Setter; import org.runimo.runimo.records.service.dto.RecordQuery; +@Schema(description = "기록 조회 요청 파라매터") @Getter @Setter public class MyRecordPageRequest { + @Parameter(description = "페이지 번호", example = "0") @Min(0) private Integer page = 0; + @Parameter(description = "페이지 당 크기", example = "10") @Min(1) @Max(20) private Integer size = 10; + @Parameter(description = "시작 날짜(기본값 : 요청 시점)", example = "2024-04-04") private LocalDate startDate = LocalDate.now(); + @Parameter(description = "종료 날짜(기본값 : 요청 시점)", example = "2024-04-04") private LocalDate endDate = LocalDate.now(); public static RecordQuery toQuery(MyRecordPageRequest request, Long userId) { - return new RecordQuery(userId, request.getPage(), request.getSize(), - request.getStartDate(), request.getEndDate()); + return new RecordQuery(userId, request.getPage(), request.getSize(), request.getStartDate(), + request.getEndDate()); } } diff --git a/src/main/java/org/runimo/runimo/runimo/service/dto/response/GetMyRunimoListResponse.java b/src/main/java/org/runimo/runimo/runimo/service/dto/response/GetMyRunimoListResponse.java index 725d44ad..bc892a10 100644 --- a/src/main/java/org/runimo/runimo/runimo/service/dto/response/GetMyRunimoListResponse.java +++ b/src/main/java/org/runimo/runimo/runimo/service/dto/response/GetMyRunimoListResponse.java @@ -5,6 +5,7 @@ @Schema(description = "보유 러니모 목록 조회 응답") public record GetMyRunimoListResponse( + Long totalDistanceInMeters, List runimos ) { diff --git a/src/main/java/org/runimo/runimo/runimo/service/usecase/RunimoUsecaseImpl.java b/src/main/java/org/runimo/runimo/runimo/service/usecase/RunimoUsecaseImpl.java index 123db2d5..09cc06d9 100644 --- a/src/main/java/org/runimo/runimo/runimo/service/usecase/RunimoUsecaseImpl.java +++ b/src/main/java/org/runimo/runimo/runimo/service/usecase/RunimoUsecaseImpl.java @@ -44,6 +44,7 @@ public GetMyRunimoListResponse getMyRunimoList(Long userId) { HatchHttpResponseCode.HATCH_USER_NOT_FOUND)); return new GetMyRunimoListResponse( + user.getTotalDistanceInMeters(), RunimoSimpleModel.toDtoList(models, user.getMainRunimoId())); }