2021-08-07 15:39:29 +07:00
|
|
|
package com.cubetiqs.graphql.demo.resolver.mutation
|
2021-08-07 12:20:52 +07:00
|
|
|
|
|
|
|
import com.cubetiqs.graphql.demo.context.GMutation
|
2021-08-08 11:51:24 +07:00
|
|
|
import com.cubetiqs.graphql.demo.dgmodel.DgsConstants
|
2021-08-07 12:20:52 +07:00
|
|
|
import com.cubetiqs.graphql.demo.domain.account.Account
|
|
|
|
import com.cubetiqs.graphql.demo.domain.account.AccountInput
|
|
|
|
import com.cubetiqs.graphql.demo.domain.account.AccountMapper
|
|
|
|
import com.cubetiqs.graphql.demo.repository.AccountRepository
|
|
|
|
import com.cubetiqs.graphql.demo.repository.UserRepository
|
2021-08-07 19:56:39 +07:00
|
|
|
import com.netflix.graphql.dgs.DgsMutation
|
2021-08-07 12:20:52 +07:00
|
|
|
import org.springframework.beans.factory.annotation.Autowired
|
|
|
|
import org.springframework.transaction.annotation.Propagation
|
|
|
|
import org.springframework.transaction.annotation.Transactional
|
|
|
|
|
|
|
|
@GMutation
|
2021-08-07 19:56:39 +07:00
|
|
|
class AccountMutationResolver {
|
|
|
|
@Autowired
|
|
|
|
private lateinit var accountRepository: AccountRepository
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private lateinit var userRepository: UserRepository
|
|
|
|
|
2021-08-08 11:51:24 +07:00
|
|
|
@DgsMutation(field = DgsConstants.MUTATION.OpenAccount)
|
2021-08-07 12:20:52 +07:00
|
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
|
|
fun openAccount(input: AccountInput): Account {
|
|
|
|
val account = AccountMapper.fromInputToAccount(input)
|
2021-08-07 19:56:39 +07:00
|
|
|
val user = userRepository.findById(input.userId ?: 0).orElse(null)
|
|
|
|
?: throw Exception("User not found to open an account!")
|
2021-08-07 12:20:52 +07:00
|
|
|
account.user = user
|
|
|
|
return accountRepository.save(account)
|
|
|
|
}
|
|
|
|
}
|