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 { 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 )