class Routes

This is an internal utility class used to manage the GraphQL @routes, which are stored in an object dump called 'routes'. The routes map connections between names of queries and mutations, and methods in the _queries modules.

A route has the following format: { query_name => {'module' => name of query module,

                'method' => name of method in that module,
                'output_type' => type to cast over the result of the method},
                'arguments' => hash of argument names and GraphQL types
}

Examples: 'Author' => {module: 'AuthorQueries', method: 'get', output_type: 'Author', 'arguments' => {'id' => 'ID'}}, 'Authors' => {module: 'AuthorQueries', method: 'all', output_type: '[Author]', 'arguments' => {}}

Public Class Methods

new() click to toggle source
# File lib/surikat/routes.rb, line 18
def initialize
  @filename = "#{FileUtils.pwd}/config/routes.yml"
  @routes = load
end

Public Instance Methods

all() click to toggle source
# File lib/surikat/routes.rb, line 23
def all
  @routes
end
clear() click to toggle source
# File lib/surikat/routes.rb, line 51
def clear
  @routes = {}
  save
end
delete_mutation(mutation_name) click to toggle source
# File lib/surikat/routes.rb, line 45
def delete_mutation mutation_name
  raise "Mutation #{mutation_name} not found" if @routes['mutations'].nil? || !(@routes['mutations']&.keys&.include?(mutation_name))
  @routes['mutations'].delete mutation_name
  save
end
delete_query(query_name) click to toggle source
# File lib/surikat/routes.rb, line 39
def delete_query query_name
  raise "Query #{query_name} not found" if @routes['queries'].nil? || !(@routes['queries']&.keys&.include?(query_name))
  @routes['queries'].delete query_name
  save
end
merge_mutation(route) click to toggle source
# File lib/surikat/routes.rb, line 33
def merge_mutation route
  @routes['mutations'] ||= {}
  @routes['mutations'].merge!(route)
  save
end
merge_query(route) click to toggle source
# File lib/surikat/routes.rb, line 27
def merge_query route
  @routes['queries'] ||= {}
  @routes['queries'].merge!(route)
  save
end

Private Instance Methods

load() click to toggle source
# File lib/surikat/routes.rb, line 57
def load
  return {} unless File.exists?(@filename)
  YAML.load_file @filename
end
save() click to toggle source
# File lib/surikat/routes.rb, line 62
def save
  File.open(@filename, 'w') { |file| file.write(@routes.to_yaml)}
end