From f1ebc0f57db6d2a4ea75531c4a5cad02602f71d8 Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 23 Jul 2025 15:59:17 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=EC=97=90=EC=84=9C=EC=9D=98=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=EC=BB=A4=EC=8A=A4=ED=85=80=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=20=EC=A0=81=EC=9A=A9=20=EB=B0=8F=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20DSL=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/business/MemberService.kt | 33 ++++++++----------- .../member/exception/MemberErrorCode.kt | 12 +++++++ .../member/exception/MemberException.kt | 8 +++++ 3 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 src/main/kotlin/roomescape/member/exception/MemberErrorCode.kt create mode 100644 src/main/kotlin/roomescape/member/exception/MemberException.kt diff --git a/src/main/kotlin/roomescape/member/business/MemberService.kt b/src/main/kotlin/roomescape/member/business/MemberService.kt index 2dda221c..8ff4072e 100644 --- a/src/main/kotlin/roomescape/member/business/MemberService.kt +++ b/src/main/kotlin/roomescape/member/business/MemberService.kt @@ -1,11 +1,10 @@ package roomescape.member.business import org.springframework.data.repository.findByIdOrNull -import org.springframework.http.HttpStatus import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional -import roomescape.common.exception.ErrorType -import roomescape.common.exception.RoomescapeException +import roomescape.member.exception.MemberErrorCode +import roomescape.member.exception.MemberException import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.member.infrastructure.persistence.MemberRepository import roomescape.member.web.MemberRetrieveListResponse @@ -17,24 +16,18 @@ class MemberService( private val memberRepository: MemberRepository ) { fun findMembers(): MemberRetrieveListResponse = MemberRetrieveListResponse( - memberRepository.findAll() - .map { it.toRetrieveResponse() } - .toList() + members = memberRepository.findAll().map { it.toRetrieveResponse() } ) - fun findById(memberId: Long): MemberEntity = memberRepository.findByIdOrNull(memberId) - ?: throw RoomescapeException( - ErrorType.MEMBER_NOT_FOUND, - String.format("[memberId: %d]", memberId), - HttpStatus.BAD_REQUEST - ) + fun findById(memberId: Long): MemberEntity = fetchOrThrow { + memberRepository.findByIdOrNull(memberId) + } - fun findByEmailAndPassword(email: String, password: String): MemberEntity = - memberRepository.findByEmailAndPassword(email, password) - ?: throw RoomescapeException( - ErrorType.MEMBER_NOT_FOUND, - String.format("[email: %s, password: %s]", email, password), - HttpStatus.BAD_REQUEST - ) + fun findByEmailAndPassword(email: String, password: String): MemberEntity = fetchOrThrow { + memberRepository.findByEmailAndPassword(email, password) + } + + private fun fetchOrThrow(block: () -> MemberEntity?): MemberEntity { + return block() ?: throw MemberException(MemberErrorCode.MEMBER_NOT_FOUND) + } } - diff --git a/src/main/kotlin/roomescape/member/exception/MemberErrorCode.kt b/src/main/kotlin/roomescape/member/exception/MemberErrorCode.kt new file mode 100644 index 00000000..3b365311 --- /dev/null +++ b/src/main/kotlin/roomescape/member/exception/MemberErrorCode.kt @@ -0,0 +1,12 @@ +package roomescape.member.exception + +import org.springframework.http.HttpStatus +import roomescape.common.exception.ErrorCode + +enum class MemberErrorCode( + override val httpStatus: HttpStatus, + override val errorCode: String, + override val message: String +) : ErrorCode { + MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "M001", "회원을 찾을 수 없어요.") +} diff --git a/src/main/kotlin/roomescape/member/exception/MemberException.kt b/src/main/kotlin/roomescape/member/exception/MemberException.kt new file mode 100644 index 00000000..62bea601 --- /dev/null +++ b/src/main/kotlin/roomescape/member/exception/MemberException.kt @@ -0,0 +1,8 @@ +package roomescape.member.exception + +import roomescape.common.exception.RoomescapeExceptionV2 + +class MemberException( + override val errorCode: MemberErrorCode, + override val message: String = errorCode.message +) : RoomescapeExceptionV2(errorCode, message)