feat : User Upsert Port 및 Adapter 구현, Service 로직에 추가

This commit is contained in:
banjjoknim
2022-04-22 03:44:22 +09:00
parent 5da53998dc
commit 66fbb92908
4 changed files with 31 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
package com.banjjoknim.cleanarchitecture.user.adapter.out.persistence
import com.banjjoknim.cleanarchitecture.user.application.port.out.UpsertUserPersistencePort
import com.banjjoknim.cleanarchitecture.user.domain.model.User
import org.springframework.stereotype.Component
@Component
class UpsertUserPersistenceAdapter(
private val userEntityRepository: UserEntityRepository
): UpsertUserPersistencePort {
override fun upsert(user: User) {
userEntityRepository.save(user.toDomainEntity())
}
}

View File

@@ -0,0 +1,7 @@
package com.banjjoknim.cleanarchitecture.user.application.port.out
import com.banjjoknim.cleanarchitecture.user.domain.model.User
interface UpsertUserPersistencePort {
fun upsert(user: User)
}

View File

@@ -4,6 +4,7 @@ import com.banjjoknim.cleanarchitecture.user.application.port.`in`.ChangeNicknam
import com.banjjoknim.cleanarchitecture.user.application.port.`in`.ChangeNicknameResponse
import com.banjjoknim.cleanarchitecture.user.application.port.`in`.ChangeNicknameUseCase
import com.banjjoknim.cleanarchitecture.user.application.port.out.LoadUserPersistencePort
import com.banjjoknim.cleanarchitecture.user.application.port.out.UpsertUserPersistencePort
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
@@ -11,10 +12,12 @@ import org.springframework.transaction.annotation.Transactional
@Service
class ChangeNicknameService(
private val loadUserPersistencePort: LoadUserPersistencePort,
private val upsertUserPersistencePort: UpsertUserPersistencePort
) : ChangeNicknameUseCase {
override fun changeNickname(changeNicknameRequest: ChangeNicknameRequest): ChangeNicknameResponse {
val user = loadUserPersistencePort.loadUser(changeNicknameRequest.userId)
user.changeNickname(changeNicknameRequest.newNickname)
upsertUserPersistencePort.upsert(user)
return ChangeNicknameResponse(user.id)
}
}

View File

@@ -1,5 +1,8 @@
package com.banjjoknim.cleanarchitecture.user.domain.model
import com.banjjoknim.cleanarchitecture.user.domain.entity.NicknameColumn
import com.banjjoknim.cleanarchitecture.user.domain.entity.UserEntity
class User(
var id: Long = 0L,
var nickname: Nickname
@@ -7,4 +10,8 @@ class User(
fun changeNickname(newNickname: String) {
this.nickname = Nickname(newNickname)
}
fun toDomainEntity(): UserEntity {
return UserEntity(id, NicknameColumn(nickname.value))
}
}