generated from pricelees/issue-pr-template
49 lines
1.5 KiB
Kotlin
49 lines
1.5 KiB
Kotlin
package roomescape.member.web
|
|
|
|
import io.swagger.v3.oas.annotations.media.Schema
|
|
import org.springframework.web.bind.annotation.GetMapping
|
|
import org.springframework.web.bind.annotation.RestController
|
|
import roomescape.member.business.MemberService
|
|
import roomescape.member.infrastructure.persistence.Member
|
|
import roomescape.common.dto.response.RoomEscapeApiResponse
|
|
|
|
@RestController
|
|
class MemberController(
|
|
private val memberService: MemberService
|
|
) : MemberAPI {
|
|
|
|
@GetMapping("/members")
|
|
override fun readAllMembers(): RoomEscapeApiResponse<MembersResponse> {
|
|
val result: MembersResponse = memberService.readAllMembers()
|
|
|
|
return RoomEscapeApiResponse.success(result)
|
|
}
|
|
}
|
|
|
|
@Schema(name = "회원 조회 응답", description = "회원 정보 조회 응답시 사용됩니다.")
|
|
data class MemberResponse(
|
|
@field:Schema(description = "회원의 고유 번호")
|
|
val id: Long,
|
|
|
|
@field:Schema(description = "회원의 이름")
|
|
val name: String
|
|
) {
|
|
companion object {
|
|
@JvmStatic
|
|
fun fromEntity(member: Member): MemberResponse {
|
|
return MemberResponse(member.id!!, member.name)
|
|
}
|
|
}
|
|
}
|
|
|
|
fun Member.toResponse(): MemberResponse = MemberResponse(
|
|
id = id!!,
|
|
name = name
|
|
)
|
|
|
|
@Schema(name = "회원 목록 조회 응답", description = "모든 회원의 정보 조회 응답시 사용됩니다.")
|
|
data class MembersResponse(
|
|
@field:Schema(description = "모든 회원의 ID 및 이름")
|
|
val members: List<MemberResponse>
|
|
)
|