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