[#20] 도메인별 예외 분리 #21

Merged
pricelees merged 37 commits from refactor/#20 into main 2025-07-24 02:48:53 +00:00
3 changed files with 33 additions and 20 deletions
Showing only changes of commit f1ebc0f57d - Show all commits

View File

@ -1,11 +1,10 @@
package roomescape.member.business package roomescape.member.business
import org.springframework.data.repository.findByIdOrNull import org.springframework.data.repository.findByIdOrNull
import org.springframework.http.HttpStatus
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional import org.springframework.transaction.annotation.Transactional
import roomescape.common.exception.ErrorType import roomescape.member.exception.MemberErrorCode
import roomescape.common.exception.RoomescapeException import roomescape.member.exception.MemberException
import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.member.infrastructure.persistence.MemberEntity
import roomescape.member.infrastructure.persistence.MemberRepository import roomescape.member.infrastructure.persistence.MemberRepository
import roomescape.member.web.MemberRetrieveListResponse import roomescape.member.web.MemberRetrieveListResponse
@ -17,24 +16,18 @@ class MemberService(
private val memberRepository: MemberRepository private val memberRepository: MemberRepository
) { ) {
fun findMembers(): MemberRetrieveListResponse = MemberRetrieveListResponse( fun findMembers(): MemberRetrieveListResponse = MemberRetrieveListResponse(
memberRepository.findAll() members = memberRepository.findAll().map { it.toRetrieveResponse() }
.map { it.toRetrieveResponse() }
.toList()
) )
fun findById(memberId: Long): MemberEntity = memberRepository.findByIdOrNull(memberId) fun findById(memberId: Long): MemberEntity = fetchOrThrow {
?: throw RoomescapeException( memberRepository.findByIdOrNull(memberId)
ErrorType.MEMBER_NOT_FOUND, }
String.format("[memberId: %d]", memberId),
HttpStatus.BAD_REQUEST
)
fun findByEmailAndPassword(email: String, password: String): MemberEntity = fun findByEmailAndPassword(email: String, password: String): MemberEntity = fetchOrThrow {
memberRepository.findByEmailAndPassword(email, password) memberRepository.findByEmailAndPassword(email, password)
?: throw RoomescapeException( }
ErrorType.MEMBER_NOT_FOUND,
String.format("[email: %s, password: %s]", email, password), private fun fetchOrThrow(block: () -> MemberEntity?): MemberEntity {
HttpStatus.BAD_REQUEST return block() ?: throw MemberException(MemberErrorCode.MEMBER_NOT_FOUND)
) }
} }

View File

@ -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", "회원을 찾을 수 없어요.")
}

View File

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