diff --git a/adapter/rdb/src/main/kotlin/com/xorker/draw/auth/AuthUserJpaRepository.kt b/adapter/rdb/src/main/kotlin/com/xorker/draw/auth/AuthUserJpaRepository.kt index 4f73d961..f5db9790 100644 --- a/adapter/rdb/src/main/kotlin/com/xorker/draw/auth/AuthUserJpaRepository.kt +++ b/adapter/rdb/src/main/kotlin/com/xorker/draw/auth/AuthUserJpaRepository.kt @@ -1,17 +1,26 @@ package com.xorker.draw.auth import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param internal interface AuthUserJpaRepository : JpaRepository { @Query( - "SELECT au FROM AuthUserJpaEntity au " + - "JOIN FETCH au.user " + - "WHERE au.platformUserId = :platformUserId " + + "select au from AuthUserJpaEntity au " + + "join fetch au.user " + + "where au.platformUserId = :platformUserId " + "and au.platform=:platform ", ) fun find(platform: AuthPlatform, platformUserId: String): AuthUserJpaEntity? - fun findByUserId(userId: Long): AuthUserJpaEntity? + fun findByUserId(userId: Long): AuthUserJpaEntity + + @Modifying + @Query( + "delete from AuthUserJpaEntity au " + + "where au.user.id = :userId", + ) + fun deleteAllByUserId(@Param(value = "userId") userId: Long) } diff --git a/adapter/rdb/src/main/kotlin/com/xorker/draw/user/UserAdapter.kt b/adapter/rdb/src/main/kotlin/com/xorker/draw/user/UserAdapter.kt index 7d320bec..708b2f69 100644 --- a/adapter/rdb/src/main/kotlin/com/xorker/draw/user/UserAdapter.kt +++ b/adapter/rdb/src/main/kotlin/com/xorker/draw/user/UserAdapter.kt @@ -14,6 +14,7 @@ internal class UserAdapter( private val userJpaRepository: UserJpaRepository, private val authUserJpaRepository: AuthUserJpaRepository, ) : UserRepository { + override fun getUser(platform: AuthPlatform, platformUserId: String): UserInfo? = authUserJpaRepository.find(platform, platformUserId)?.user?.toDomain() @@ -40,6 +41,9 @@ internal class UserAdapter( override fun withdrawal(userId: UserId) { val user = userJpaRepository.findByIdOrNull(userId.value) ?: throw NotFoundUserException user.withdrawal() + + authUserJpaRepository.deleteAllByUserId(userId.value) + userJpaRepository.save(user) }