generated from pricelees/issue-pr-template
58 lines
3.6 KiB
Kotlin
58 lines
3.6 KiB
Kotlin
package roomescape.theme.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 io.swagger.v3.oas.annotations.tags.Tag
|
|
import jakarta.validation.Valid
|
|
import org.springframework.http.ResponseEntity
|
|
import org.springframework.web.bind.annotation.PathVariable
|
|
import org.springframework.web.bind.annotation.RequestBody
|
|
import roomescape.admin.infrastructure.persistence.AdminType
|
|
import roomescape.admin.infrastructure.persistence.Privilege
|
|
import roomescape.auth.web.support.AdminOnly
|
|
import roomescape.auth.web.support.Public
|
|
import roomescape.common.dto.response.CommonApiResponse
|
|
import roomescape.theme.web.*
|
|
|
|
@Tag(name = "5. 관리자 테마 API", description = "관리자 페이지에서 테마를 조회 / 추가 / 삭제할 때 사용합니다.")
|
|
interface ThemeAPI {
|
|
@AdminOnly(type = AdminType.HQ, privilege = Privilege.READ_SUMMARY)
|
|
@Operation(summary = "모든 테마 조회", description = "관리자 페이지에서 요약된 테마 목록을 조회합니다.", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun findAdminThemes(): ResponseEntity<CommonApiResponse<AdminThemeSummaryListResponse>>
|
|
|
|
@AdminOnly(type = AdminType.HQ, privilege = Privilege.READ_DETAIL)
|
|
@Operation(summary = "테마 상세 조회", description = "해당 테마의 상세 정보를 조회합니다.", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun findAdminThemeDetail(@PathVariable("id") id: Long): ResponseEntity<CommonApiResponse<AdminThemeDetailResponse>>
|
|
|
|
@AdminOnly(type = AdminType.HQ, privilege = Privilege.CREATE)
|
|
@Operation(summary = "테마 추가", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun createTheme(@Valid @RequestBody themeCreateRequest: ThemeCreateRequest): ResponseEntity<CommonApiResponse<ThemeCreateResponseV2>>
|
|
|
|
@AdminOnly(type = AdminType.HQ, privilege = Privilege.DELETE)
|
|
@Operation(summary = "테마 삭제", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true))
|
|
fun deleteTheme(@PathVariable id: Long): ResponseEntity<CommonApiResponse<Unit>>
|
|
|
|
@AdminOnly(type = AdminType.HQ, privilege = Privilege.UPDATE)
|
|
@Operation(summary = "테마 수정", tags = ["관리자 로그인이 필요한 API"])
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun updateTheme(
|
|
@PathVariable id: Long,
|
|
@Valid @RequestBody themeUpdateRequest: ThemeUpdateRequest
|
|
): ResponseEntity<CommonApiResponse<Unit>>
|
|
|
|
@Public
|
|
@Operation(summary = "예약 페이지에서 모든 테마 조회", description = "모든 테마를 조회합니다.")
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun findUserThemes(): ResponseEntity<CommonApiResponse<ThemeInfoListResponse>>
|
|
|
|
@Public
|
|
@Operation(summary = "예약 페이지에서 입력한 날짜에 가능한 테마 조회", description = "입력한 날짜에 가능한 테마를 조회합니다.")
|
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
fun findThemesByIds(request: ThemeIdListResponse): ResponseEntity<CommonApiResponse<ThemeInfoListResponse>>
|
|
}
|