create_pokemon.rb 704 B

12345678910111213141516171819202122232425262728
  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. {pokemon: pkmn, errors: []}
  13. else
  14. errors = pkmn.errors.full_messages.map do |m|
  15. ::APIError::BaseError.new(m)
  16. end
  17. {pokemon: nil, errors: errors}
  18. end
  19. end
  20. end
  21. end