generated from pricelees/issue-pr-template
45 lines
1.6 KiB
Kotlin
45 lines
1.6 KiB
Kotlin
package roomescape.member.business
|
|
|
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
|
import org.springframework.stereotype.Service
|
|
import org.springframework.transaction.annotation.Transactional
|
|
import roomescape.member.implement.MemberFinder
|
|
import roomescape.member.implement.MemberWriter
|
|
import roomescape.member.infrastructure.persistence.MemberEntity
|
|
import roomescape.member.infrastructure.persistence.Role
|
|
import roomescape.member.web.*
|
|
|
|
private val log = KotlinLogging.logger {}
|
|
|
|
@Service
|
|
class MemberService(
|
|
private val memberWriter: MemberWriter,
|
|
private val memberFinder: MemberFinder,
|
|
) {
|
|
@Transactional(readOnly = true)
|
|
fun findMembers(): MemberRetrieveListResponse {
|
|
log.debug { "[MemberService.findMembers] 시작" }
|
|
|
|
return memberFinder.findAll()
|
|
.toRetrieveListResponse()
|
|
.also { log.info { "[MemberService.findMembers] 완료. ${it.members.size}명 반환" } }
|
|
}
|
|
|
|
@Transactional(readOnly = true)
|
|
fun findById(memberId: Long): MemberEntity {
|
|
log.debug { "[MemberService.findById] 시작" }
|
|
|
|
return memberFinder.findById(memberId)
|
|
.also { log.info { "[MemberService.findById] 완료. memberId=${memberId}, email=${it.email}" } }
|
|
}
|
|
|
|
@Transactional
|
|
fun createMember(request: SignupRequest): SignupResponse {
|
|
log.debug { "[MemberService.createMember] 시작" }
|
|
|
|
return memberWriter.create(request.name, request.email, request.password, Role.MEMBER)
|
|
.toSignupResponse()
|
|
.also { log.info { "[MemberService.create] 완료: email=${request.email} memberId=${it.id}" } }
|
|
}
|
|
}
|