generated from pricelees/issue-pr-template
<!-- 제목 양식 --> <!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) --> ## 📝 관련 이슈 및 PR **PR과 관련된 이슈 번호** - #39 ## ✨ 작업 내용 <!-- 어떤 작업을 했는지 알려주세요! --> - 기존 시간 테이블은 유지하고 일정 스키마 및 기능 도입 - 관련 프론트엔드 페이지 생성 ## 🧪 테스트 <!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! --> - 이전 테마 작업과 마찬가지로 모든 API를 대상으로 통합 테스트 진행 ## 📚 참고 자료 및 기타 <!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! --> Reviewed-on: #40 Co-authored-by: pricelees <priceelees@gmail.com> Co-committed-by: pricelees <priceelees@gmail.com>
70 lines
3.2 KiB
Kotlin
70 lines
3.2 KiB
Kotlin
package roomescape.schedule.docs
|
|
|
|
import io.swagger.v3.oas.annotations.Operation
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponse
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponses
|
|
import jakarta.validation.Valid
|
|
import org.springframework.format.annotation.DateTimeFormat
|
|
import org.springframework.http.ResponseEntity
|
|
import org.springframework.web.bind.annotation.PathVariable
|
|
import org.springframework.web.bind.annotation.RequestBody
|
|
import org.springframework.web.bind.annotation.RequestParam
|
|
import roomescape.auth.web.support.Admin
|
|
import roomescape.auth.web.support.LoginRequired
|
|
import roomescape.common.dto.response.CommonApiResponse
|
|
import roomescape.schedule.web.*
|
|
import java.time.LocalDate
|
|
|
|
interface ScheduleAPI {
|
|
|
|
@LoginRequired
|
|
@Operation(summary = "입력된 날짜에 가능한 테마 목록 조회", tags = ["로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "입력된 날짜에 가능한 테마 목록 조회", useReturnTypeSchema = true))
|
|
fun findAvailableThemes(
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
|
): ResponseEntity<CommonApiResponse<AvailableThemeIdListResponse>>
|
|
|
|
@LoginRequired
|
|
@Operation(summary = "입력된 날짜, 테마에 대한 모든 시간 조회", tags = ["로그인이 필요한 API"])
|
|
@ApiResponses(
|
|
ApiResponse(
|
|
responseCode = "200",
|
|
description = "입력된 날짜, 테마에 대한 모든 시간 조회",
|
|
useReturnTypeSchema = true
|
|
)
|
|
)
|
|
fun findAllTime(
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate,
|
|
@RequestParam("themeId") themeId: Long
|
|
): ResponseEntity<CommonApiResponse<ScheduleRetrieveListResponse>>
|
|
|
|
@Admin
|
|
@Operation(summary = "일정 상세 조회", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "감사 정보를 포함하여 일정 상세 조회", useReturnTypeSchema = true))
|
|
fun findScheduleDetail(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<ScheduleDetailRetrieveResponse>>
|
|
|
|
@Admin
|
|
@Operation(summary = "일정 생성", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun createSchedule(
|
|
@Valid @RequestBody request: ScheduleCreateRequest
|
|
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>>
|
|
|
|
@Admin
|
|
@Operation(summary = "일정 수정", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun updateSchedule(
|
|
@PathVariable("id") id: Long,
|
|
@Valid @RequestBody request: ScheduleUpdateRequest
|
|
): ResponseEntity<CommonApiResponse<Unit>>
|
|
|
|
@Admin
|
|
@Operation(summary = "일정 삭제", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true))
|
|
fun deleteSchedule(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<Unit>>
|
|
}
|