class GraphqlMutationsGenerator

Public Instance Methods

generate() click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 3
def generate
  resource = file_name.underscore.singularize
  dir = "app/graphql/#{resource.pluralize}/mutations"
  system("mkdir -p #{dir}")
  generate_create_mutation(dir, resource)
  generate_update_mutation(dir, resource)
  generate_destroy_mutation(dir, resource)
  generate_bulk_create_mutation(dir, resource)
  generate_bulk_update_mutation(dir, resource)
end

Private Instance Methods

generate_bulk_create_mutation(dir, resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 16
  def generate_bulk_create_mutation(dir, resource)
    File.write(
      "#{dir}/bulk_create.rb",
      <<~STRING
        #{resource_class(resource)}::Mutations::BulkCreate = GraphQL::Field.define do
          description 'creates some #{resource_class(resource).pluralize}'
          type types[#{resource_class(resource)}::Type]

          argument :#{resource}, !types[#{resource_class(resource)}::Mutations::InputType]

          resolve ApplicationService.call(:#{resource}, :bulk_create)
        end
      STRING
    )
  end
generate_bulk_update_mutation(dir, resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 32
  def generate_bulk_update_mutation(dir, resource)
    File.write(
      "#{dir}/bulk_update.rb",
      <<~STRING
        #{resource_class(resource)}::Mutations::BulkUpdate = GraphQL::Field.define do
          description 'Updates some #{resource_class(resource).pluralize}'
          type types[#{resource_class(resource)}::Type]

          argument :#{resource}, !types[#{resource_class(resource)}::Mutations::InputType]

          resolve ApplicationService.call(:#{resource}, :bulk_update)
        end
      STRING
    )
  end
generate_create_mutation(dir, resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 48
  def generate_create_mutation(dir, resource)
    File.write(
      "#{dir}/create.rb",
      <<~STRING
        #{resource_class(resource)}::Mutations::Create = GraphQL::Field.define do
          description 'Creates a #{resource_class(resource).singularize}'
          type #{resource_class(resource)}::Type

          argument :#{resource}, !#{resource_class(resource)}::Mutations::InputType

          resolve ApplicationService.call(:#{resource}, :create)
        end
      STRING
    )
  end
generate_destroy_mutation(dir, resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 81
  def generate_destroy_mutation(dir, resource)
    File.write(
      "#{dir}/destroy.rb",
      <<~STRING
        #{resource_class(resource)}::Mutations::Destroy = GraphQL::Field.define do
          description 'Destroys a #{resource_class(resource).singularize}'
          type #{resource_class(resource)}::Type

          argument :id, !types.String

          resolve ApplicationService.call(:#{resource}, :destroy)
        end
      STRING
    )
  end
generate_update_mutation(dir, resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 64
  def generate_update_mutation(dir, resource)
    File.write(
      "#{dir}/update.rb",
      <<~STRING
        #{resource_class(resource)}::Mutations::Update = GraphQL::Field.define do
          description 'Updates a #{resource_class(resource).singularize}'
          type #{resource_class(resource)}::Type

          argument :id, types.String
          argument :#{resource}, !#{resource_class(resource)}::Mutations::InputType

          resolve ApplicationService.call(:#{resource}, :update)
        end
      STRING
    )
  end
resource_class(resource) click to toggle source
# File lib/generators/graphql_mutations/graphql_mutations_generator.rb, line 97
def resource_class(resource)
  @resource_class ||= resource.pluralize.camelize
end