From c563c61c1793b27990cf2cf2453b95dba0266236 Mon Sep 17 00:00:00 2001 From: pricelees Date: Sat, 12 Jul 2025 19:53:27 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=20=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=20&=20DTO=20=EC=BD=94=ED=8B=80?= =?UTF-8?q?=EB=A6=B0=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roomescape/member/web/MemberController.kt | 72 +++++++++++-------- .../roomescape/member/web/MemberResponse.java | 14 ---- .../member/web/MembersResponse.java | 11 --- 3 files changed, 42 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/roomescape/member/web/MemberResponse.java delete mode 100644 src/main/java/roomescape/member/web/MembersResponse.java diff --git a/src/main/java/roomescape/member/web/MemberController.kt b/src/main/java/roomescape/member/web/MemberController.kt index 40dddf7d..1d883be0 100644 --- a/src/main/java/roomescape/member/web/MemberController.kt +++ b/src/main/java/roomescape/member/web/MemberController.kt @@ -1,36 +1,48 @@ -package roomescape.member.web; +package roomescape.member.web -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - -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 roomescape.member.business.MemberService; -import roomescape.system.auth.annotation.Admin; -import roomescape.system.dto.response.RoomEscapeApiResponse; +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.entity.Member +import roomescape.system.dto.response.RoomEscapeApiResponse @RestController -@Tag(name = "2. 회원 API", description = "회원 정보를 관리할 때 사용합니다.") -public class MemberController { +class MemberController( + private val memberService: MemberService +) : MemberAPI { - private final MemberService memberService; + @GetMapping("/members") + override fun readAllMembers(): RoomEscapeApiResponse { + val result: MembersResponse = memberService.readAllMembers() - public MemberController(MemberService memberService) { - this.memberService = memberService; - } - - @Admin - @GetMapping("/members") - @ResponseStatus(HttpStatus.OK) - @Operation(summary = "모든 회원 조회", tags = "관리자 로그인이 필요한 API") - @ApiResponses({ - @ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true) - }) - public RoomEscapeApiResponse getAllMembers() { - return RoomEscapeApiResponse.success(memberService.findAllMembers()); - } + 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 +) diff --git a/src/main/java/roomescape/member/web/MemberResponse.java b/src/main/java/roomescape/member/web/MemberResponse.java deleted file mode 100644 index 876f5752..00000000 --- a/src/main/java/roomescape/member/web/MemberResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package roomescape.member.web; - -import io.swagger.v3.oas.annotations.media.Schema; -import roomescape.member.infrastructure.entity.Member; - -@Schema(name = "회원 조회 응답", description = "회원 정보 조회 응답시 사용됩니다.") -public record MemberResponse( - @Schema(description = "회원 번호. 회원을 식별할 때 사용합니다.") Long id, - @Schema(description = "회원의 이름") String name -) { - public static MemberResponse fromEntity(Member member) { - return new MemberResponse(member.getId(), member.getName()); - } -} diff --git a/src/main/java/roomescape/member/web/MembersResponse.java b/src/main/java/roomescape/member/web/MembersResponse.java deleted file mode 100644 index 92543779..00000000 --- a/src/main/java/roomescape/member/web/MembersResponse.java +++ /dev/null @@ -1,11 +0,0 @@ -package roomescape.member.web; - -import java.util.List; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(name = "회원 목록 조회 응답", description = "모든 회원의 정보 조회 응답시 사용됩니다.") -public record MembersResponse( - @Schema(description = "모든 회원의 ID 및 이름") List members -) { -}