generated from pricelees/issue-pr-template
refactor: 회원 도메인에서의 새로운 커스텀 예외 적용 및 공통 로직 DSL 처리
This commit is contained in:
parent
4820dcfca8
commit
f1ebc0f57d
@ -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)
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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", "회원을 찾을 수 없어요.")
|
||||||
|
}
|
||||||
@ -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)
|
||||||
Loading…
x
Reference in New Issue
Block a user