Spring - user delete 회원 삭제 구현하기

cozzin·2024년 5월 29일
0

Repository에 deleteById를 추가해준다.
JpaRepository의 method와 동일한 이름으로 추가해주면 기본 구현을 사용할 수 있다.

interface UserRepository {
    fun deleteById(id: Long)
}

@Repository
interface JpaUserRepository: JpaRepository<User, Long>, UserRepository {
}

Optional을 사용해도 되겠지만, 이번에는 Exception을 던져보자

class UserNotFoundException(message: String): RuntimeException(message)

?: https://kotlinlang.org/docs/null-safety.html#elvis-operator
elvis operator를 쓰면 null인 경우를 단순하게 처리할 수 있다.

@Service
class UserService(private val userRepository: UserRepository) {
    fun deleteUserById(userId: Long) {
        val user = findUserById(userId = userId) ?: throw UserNotFoundException("User with ID $userId not found")
        userRepository.deleteById(user.id)
    }
}
@RestController
@RequestMapping("/users")
class UserController(
    private val userService: UserService
) {
    @DeleteMapping("/{userId}")
    fun deleteUser(@PathVariable userId: Long): ResponseEntity<Void> {
        return try {
            userService.deleteUserById(userId)
            ResponseEntity.noContent().build()
        } catch (e: UserNotFoundException) {
            ResponseEntity.notFound().build()
        }
    }
}
profile
Software Engineer

0개의 댓글