create_pokemon.rb 721 B

1234567891011121314151617181920212223242526272829
  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. {
  18. pokemon: nil,
  19. errors: pkmn.errors.full_messages.map { |m| ::APIError::BaseError.new(m) },
  20. }
  21. end
  22. end
  23. end
  24. end