graphiti_graphql 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +144 -0
- data/README.md +35 -0
- data/Rakefile +6 -0
- data/bin/bundle +105 -0
- data/bin/byebug +29 -0
- data/bin/coderay +29 -0
- data/bin/console +14 -0
- data/bin/graphiti +29 -0
- data/bin/htmldiff +29 -0
- data/bin/ldiff +29 -0
- data/bin/pry +29 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/rubocop +29 -0
- data/bin/ruby-parse +29 -0
- data/bin/ruby-rewrite +29 -0
- data/bin/setup +8 -0
- data/bin/standardrb +29 -0
- data/config/routes.rb +6 -0
- data/graphiti_graphql.gemspec +45 -0
- data/lib/graphiti_graphql.rb +71 -0
- data/lib/graphiti_graphql/engine.rb +89 -0
- data/lib/graphiti_graphql/errors.rb +5 -0
- data/lib/graphiti_graphql/federation.rb +263 -0
- data/lib/graphiti_graphql/graphiti_schema/resource.rb +117 -0
- data/lib/graphiti_graphql/graphiti_schema/sideload.rb +56 -0
- data/lib/graphiti_graphql/graphiti_schema/wrapper.rb +36 -0
- data/lib/graphiti_graphql/runner.rb +313 -0
- data/lib/graphiti_graphql/schema.rb +538 -0
- data/lib/graphiti_graphql/util.rb +27 -0
- data/lib/graphiti_graphql/version.rb +3 -0
- metadata +260 -0
data/bin/htmldiff
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'htmldiff' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("diff-lcs", "htmldiff")
|
data/bin/ldiff
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'ldiff' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("diff-lcs", "ldiff")
|
data/bin/pry
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'pry' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("pry", "pry")
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/rubocop
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/bin/ruby-parse
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'ruby-parse' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("parser", "ruby-parse")
|
data/bin/ruby-rewrite
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'ruby-rewrite' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("parser", "ruby-rewrite")
|
data/bin/setup
ADDED
data/bin/standardrb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'standardrb' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("standard", "standardrb")
|
data/config/routes.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "graphiti_graphql/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "graphiti_graphql"
|
7
|
+
spec.version = GraphitiGraphQL::VERSION
|
8
|
+
spec.authors = ["Lee Richmond"]
|
9
|
+
spec.email = ["lrichmond1@bloomberg.net"]
|
10
|
+
|
11
|
+
spec.summary = "GraphQL support for Graphiti"
|
12
|
+
spec.description = "GraphQL support for Graphiti"
|
13
|
+
spec.homepage = "https://www.graphiti.dev"
|
14
|
+
|
15
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
# spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
19
|
+
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
20
|
+
|
21
|
+
# Specify which files should be added to the gem when it is released.
|
22
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
|
+
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
24
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
end
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_dependency "activesupport", ">= 4.1"
|
31
|
+
spec.add_dependency "graphql", "~> 1.12"
|
32
|
+
|
33
|
+
spec.add_development_dependency "pry"
|
34
|
+
spec.add_development_dependency "pry-byebug"
|
35
|
+
spec.add_development_dependency "graphql", "~> 1.12"
|
36
|
+
spec.add_development_dependency "graphiti_spec_helpers"
|
37
|
+
spec.add_development_dependency "activemodel", ">= 4.1"
|
38
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
39
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
40
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
41
|
+
spec.add_development_dependency "standardrb"
|
42
|
+
|
43
|
+
spec.add_development_dependency "apollo-federation", "~> 1.1"
|
44
|
+
spec.add_development_dependency "graphql-batch", "~> 0.4"
|
45
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require "active_support/core_ext/object/json"
|
2
|
+
|
3
|
+
require "graphiti_graphql/version"
|
4
|
+
require "graphiti_graphql/graphiti_schema/wrapper"
|
5
|
+
require "graphiti_graphql/graphiti_schema/sideload"
|
6
|
+
require "graphiti_graphql/graphiti_schema/resource"
|
7
|
+
require "graphiti_graphql/errors"
|
8
|
+
require "graphiti_graphql/schema"
|
9
|
+
require "graphiti_graphql/runner"
|
10
|
+
require "graphiti_graphql/util"
|
11
|
+
|
12
|
+
Graphiti.class_eval do
|
13
|
+
class << self
|
14
|
+
attr_writer :graphql_schema
|
15
|
+
end
|
16
|
+
|
17
|
+
# TODO probably move these off of Graphiti
|
18
|
+
def self.gql(query, variables)
|
19
|
+
runner = ::GraphitiGraphQL::Runner.new
|
20
|
+
runner.execute(query, variables, graphql_schema.schema)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.graphql_schema
|
24
|
+
@graphql_schema ||= GraphitiGraphQL::Schema.generate
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.graphql_schema?
|
28
|
+
!!@graphql_schema
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.graphql_schema!(entrypoint_resources = nil)
|
32
|
+
@graphql_schema = GraphitiGraphQL::Schema.generate(entrypoint_resources)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module GraphitiGraphQL
|
37
|
+
class Error < StandardError; end
|
38
|
+
|
39
|
+
class Configuration
|
40
|
+
attr_accessor :schema_reloading
|
41
|
+
|
42
|
+
def initialize
|
43
|
+
self.schema_reloading = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class << self
|
48
|
+
attr_accessor :schema_class
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.config
|
52
|
+
@config ||= Configuration.new
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.define_context(&blk)
|
56
|
+
@define_context = blk
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.get_context
|
60
|
+
obj = Graphiti.context[:object]
|
61
|
+
if @define_context
|
62
|
+
@define_context.call(obj)
|
63
|
+
else
|
64
|
+
{object: obj}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if defined?(::Rails)
|
70
|
+
require "graphiti_graphql/engine"
|
71
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
if ActiveSupport::Inflector.method(:inflections).arity == 0
|
2
|
+
# Rails 3 does not take a language in inflections.
|
3
|
+
ActiveSupport::Inflector.inflections do |inflect|
|
4
|
+
inflect.acronym("GraphitiGraphQL")
|
5
|
+
end
|
6
|
+
else
|
7
|
+
ActiveSupport::Inflector.inflections(:en) do |inflect|
|
8
|
+
inflect.acronym("GraphitiGraphQL")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
module GraphitiGraphQL
|
13
|
+
class Engine < ::Rails::Engine
|
14
|
+
isolate_namespace GraphitiGraphQL
|
15
|
+
|
16
|
+
# Ensure error handling kicks in
|
17
|
+
# Corresponding default in config/routes.rb
|
18
|
+
config.graphiti.handled_exception_formats += [:json]
|
19
|
+
|
20
|
+
def self.reloader_class
|
21
|
+
case Rails::VERSION::MAJOR
|
22
|
+
when 4 then ActionDispatch::Reloader
|
23
|
+
when 5 then ActiveSupport::Reloader
|
24
|
+
when 6 then ::Rails.application.reloader
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# In dev mode, resource classes are reloaded, and the new classes
|
29
|
+
# don't match what's in Graphiti.resources. Make sure everything is
|
30
|
+
# the most recent available.
|
31
|
+
# Really this belongs in graphiti-rails but keeping isolated for now
|
32
|
+
initializer "graphiti_graphql.reload_resources" do |app|
|
33
|
+
::GraphitiGraphQL::Engine.reloader_class.to_prepare do
|
34
|
+
resources = []
|
35
|
+
Graphiti.resources.each do |resource|
|
36
|
+
next unless resource.name # remove
|
37
|
+
latest_resource = if (latest = resource.name.safe_constantize)
|
38
|
+
latest
|
39
|
+
else
|
40
|
+
resource
|
41
|
+
end
|
42
|
+
|
43
|
+
unless resources.find { |res| res.name == resource.name }
|
44
|
+
resources << latest_resource
|
45
|
+
end
|
46
|
+
end
|
47
|
+
Graphiti.instance_variable_set(:@resources, resources)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# We store a list of all federated relationships
|
52
|
+
# Clear that list when classes are cleared so we don't keep appending
|
53
|
+
initializer "graphiti_graphql.clear_federation" do |app|
|
54
|
+
GraphitiGraphQL::Engine.reloader_class.after_class_unload do
|
55
|
+
GraphitiGraphQL::Federation.clear!
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
initializer "graphiti_graphql.schema_reloading" do |app|
|
60
|
+
# Only reload the schema if we ask for it
|
61
|
+
# Some may want to avoid the performance penalty
|
62
|
+
if GraphitiGraphQL.config.schema_reloading
|
63
|
+
GraphitiGraphQL::Engine.reloader_class.to_prepare do
|
64
|
+
# We want to reload the schema when classes change
|
65
|
+
# But this way, you only pay the cost (time) when the GraphQL endpoint
|
66
|
+
# is actually hit
|
67
|
+
if Graphiti.graphql_schema?
|
68
|
+
Graphiti.graphql_schema = nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
initializer "graphiti_graphql.define_controller" do
|
75
|
+
# rubocop:disable Lint/ConstantDefinitionInBlock(Standard)
|
76
|
+
class GraphitiGraphQL::ExecutionController < ::ApplicationController
|
77
|
+
register_exception Graphiti::Errors::UnreadableAttribute, message: true
|
78
|
+
def execute
|
79
|
+
params = request.params # avoid strong_parameters
|
80
|
+
render json: Graphiti.gql(params[:query], params[:variables])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
initializer "graphiti_graphql.federation" do
|
86
|
+
GraphitiGraphQL::Federation.setup!
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|