vedranjukic
12/14/2017 - 4:52 PM

Implemented UserRepository interface

Implemented UserRepository interface

//
//  UserRepository interface implemented instead of
//  directly interfacing mongo db client
//
async function updateUser ({userRepository, updateParams}) {
  const { userId, userName, userEmail } = updateParams

  //  validate params
  if (!userId || !userName || !userEmail) {
    throw new InvalidParamsException('Missing required params')
  }
  
  if (!isValidUserName(userName)) {
    throw new InvalidParamsException('Invalid username')
  }
  if (!isValidEmail(userEmail)) {
    throw new InvalidParamsException('Invalid email')
  }

  const user = await userRepository.getById(userId)
  
  //  no need to validate does user exist
  //  because userRepository will throw UserNotFoundException
  //  if there is no user to return

  const updatedUser = {
    ...user,
    userName,
    userEmail
  }
  
  await userRepository.save(updatedUser)
}