From 0bb930a12847ee575cce19f2f28dc51e90071430 Mon Sep 17 00:00:00 2001 From: Sambo Chea Date: Sat, 7 Aug 2021 12:31:48 +0700 Subject: [PATCH] Task: Add check username already existed when try to mutation a new user in graphql demo --- .../kotlin/com/cubetiqs/graphql/demo/mutation/UserMutation.kt | 2 ++ .../com/cubetiqs/graphql/demo/repository/UserRepository.kt | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/kotlin/com/cubetiqs/graphql/demo/mutation/UserMutation.kt b/src/main/kotlin/com/cubetiqs/graphql/demo/mutation/UserMutation.kt index d340a7d..32ce2a7 100644 --- a/src/main/kotlin/com/cubetiqs/graphql/demo/mutation/UserMutation.kt +++ b/src/main/kotlin/com/cubetiqs/graphql/demo/mutation/UserMutation.kt @@ -16,6 +16,8 @@ class UserMutation @Autowired constructor( ) : GraphQLMutationResolver { @Transactional(propagation = Propagation.REQUIRES_NEW) fun createUser(input: UserInput): User { + if (userRepository.existsAllByUsername(input.username ?: "")) throw Exception("Username has been already existed!") + val user = UserMapper.fromInputToUser(input) return userRepository.save(user) } diff --git a/src/main/kotlin/com/cubetiqs/graphql/demo/repository/UserRepository.kt b/src/main/kotlin/com/cubetiqs/graphql/demo/repository/UserRepository.kt index 80678a8..a1800d4 100644 --- a/src/main/kotlin/com/cubetiqs/graphql/demo/repository/UserRepository.kt +++ b/src/main/kotlin/com/cubetiqs/graphql/demo/repository/UserRepository.kt @@ -11,4 +11,7 @@ import org.springframework.stereotype.Repository interface UserRepository : JpaRepository { @Query("select u from User u where u.enabled = true") fun queryAllByEnabledIsTrue(pageable: Pageable): Page + + @Query("select (count(u) > 0) from User u where u.username = ?1") + fun existsAllByUsername(username: String): Boolean } \ No newline at end of file