diff --git a/backend/src/main/java/org/example/backend/seminar/controller/SeminarController.java b/backend/src/main/java/org/example/backend/seminar/controller/SeminarController.java index 66a46c22..1be4fa2e 100644 --- a/backend/src/main/java/org/example/backend/seminar/controller/SeminarController.java +++ b/backend/src/main/java/org/example/backend/seminar/controller/SeminarController.java @@ -1,16 +1,21 @@ package org.example.backend.seminar.controller; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; +import org.example.backend.common.dto.PageRequestDto; +import org.example.backend.common.dto.ResponseDto; import org.example.backend.seminar.domain.dto.SeminarReqDto; import org.example.backend.seminar.domain.dto.SeminarResDto; import org.example.backend.seminar.service.SeminarService; +import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -31,6 +36,14 @@ public ResponseEntity createSeminar(@RequestBody SeminarReqDto seminarReqD return new ResponseEntity<>(seminarId, HttpStatus.OK); } + @Operation(summary = "모든 세미나 조회 API", description = "모든 세미나의 리스트 반환") + @GetMapping + public ResponseDto> getAllBoards(@Valid @ModelAttribute PageRequestDto pageRequest) { + + Page seminarList = seminarService.getAllSeminars(pageRequest.toPageable()); + return ResponseDto.ok(seminarList.getNumber(), seminarList.getTotalPages(), seminarList.getContent()); + } + @Operation(summary = "단일 세미나 조회 API", description = "단일 세미나의 리스트 반환") @GetMapping("/{seminarId}") public ResponseEntity getSeminar(@PathVariable(name = "seminarId") Long seminarId) { diff --git a/backend/src/main/java/org/example/backend/seminar/service/SeminarService.java b/backend/src/main/java/org/example/backend/seminar/service/SeminarService.java index 0f82014b..4d92a291 100644 --- a/backend/src/main/java/org/example/backend/seminar/service/SeminarService.java +++ b/backend/src/main/java/org/example/backend/seminar/service/SeminarService.java @@ -9,6 +9,8 @@ import org.example.backend.seminar.exception.SeminarException; import org.example.backend.seminar.exception.SeminarExceptionType; import org.example.backend.seminar.repository.SeminarRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -53,4 +55,9 @@ private Seminar findSeminarById(Long seminarId) { return seminarRepository.findById(seminarId) .orElseThrow(() -> new SeminarException(NOT_FOUND_SEMINAR)); } + + public Page getAllSeminars(Pageable pageable) { + return seminarRepository.findAll(pageable) + .map(SeminarResDto::of); + } } \ No newline at end of file