create_pokemon.rb 767 B

123456789101112131415161718192021222324252627282930313233
  1. # frozen_string_literal: true
  2. require './lib/api_error/base_error'
  3. module Mutations
  4. class CreatePokemon < Mutations::BaseMutation
  5. include ::ReturnsErrors
  6. field :pokemon, Types::PokemonType, null: true
  7. argument :pokedex_number, GraphQL::ID_TYPE, required: true
  8. argument :nickname, GraphQL::STRING_TYPE, required: false
  9. def resolve(nickname: nil, pokedex_number:)
  10. pkmn = Pokemon.new(nickname: nickname, pokedex_number: pokedex_number)
  11. if pkmn.save
  12. {
  13. pokemon: pkmn,
  14. errors: [],
  15. }
  16. else
  17. errors = pkmn.errors.full_messages.map do |m|
  18. ::APIError::BaseError.new(m)
  19. end
  20. {
  21. pokemon: nil,
  22. errors: errors,
  23. }
  24. end
  25. end
  26. end
  27. end