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
|
||||
|
||||
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 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 findById(memberId: Long): MemberEntity = fetchOrThrow {
|
||||
memberRepository.findByIdOrNull(memberId)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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