graphql_rails 0.7.0 → 1.2.1
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 +4 -4
- data/.hound.yml +1 -0
- data/.rubocop.yml +3 -3
- data/.ruby-version +1 -1
- data/.travis.yml +2 -2
- data/CHANGELOG.md +35 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +181 -71
- data/docs/README.md +40 -8
- data/docs/_sidebar.md +5 -0
- data/docs/components/controller.md +295 -9
- data/docs/components/decorator.md +69 -0
- data/docs/components/model.md +267 -6
- data/docs/components/routes.md +28 -0
- data/docs/getting_started/quick_start.md +10 -3
- data/docs/index.html +1 -1
- data/docs/logging_and_monitoring/logging_and_monitoring.md +35 -0
- data/docs/other_tools/query_runner.md +49 -0
- data/docs/other_tools/schema_dump.md +29 -0
- data/docs/testing/testing.md +3 -1
- data/graphql_rails.gemspec +5 -4
- data/lib/generators/graphql_rails/install_generator.rb +50 -0
- data/lib/generators/graphql_rails/templates/example_users_controller.erb +19 -0
- data/lib/generators/graphql_rails/templates/graphql_application_controller.erb +8 -0
- data/lib/generators/graphql_rails/templates/graphql_controller.erb +20 -0
- data/lib/generators/graphql_rails/templates/graphql_router.erb +19 -0
- data/lib/generators/graphql_rails/templates/graphql_router_spec.erb +21 -0
- data/lib/graphql_rails.rb +6 -0
- data/lib/graphql_rails/attributes/attributable.rb +22 -17
- data/lib/graphql_rails/attributes/attribute.rb +67 -3
- data/lib/graphql_rails/attributes/attribute_name_parser.rb +4 -4
- data/lib/graphql_rails/attributes/input_attribute.rb +33 -15
- data/lib/graphql_rails/attributes/input_type_parser.rb +62 -0
- data/lib/graphql_rails/attributes/type_name_info.rb +38 -0
- data/lib/graphql_rails/attributes/type_parseable.rb +132 -0
- data/lib/graphql_rails/attributes/type_parser.rb +59 -53
- data/lib/graphql_rails/concerns/service.rb +19 -0
- data/lib/graphql_rails/controller.rb +42 -21
- data/lib/graphql_rails/controller/action.rb +12 -67
- data/lib/graphql_rails/controller/action_configuration.rb +70 -28
- data/lib/graphql_rails/controller/build_controller_action_resolver.rb +52 -0
- data/lib/graphql_rails/controller/build_controller_action_resolver/controller_action_resolver.rb +28 -0
- data/lib/graphql_rails/controller/configuration.rb +56 -3
- data/lib/graphql_rails/controller/log_controller_action.rb +71 -0
- data/lib/graphql_rails/controller/request.rb +29 -8
- data/lib/graphql_rails/controller/request/format_errors.rb +58 -0
- data/lib/graphql_rails/decorator.rb +41 -0
- data/lib/graphql_rails/decorator/relation_decorator.rb +75 -0
- data/lib/graphql_rails/errors/custom_execution_error.rb +22 -0
- data/lib/graphql_rails/errors/execution_error.rb +6 -7
- data/lib/graphql_rails/errors/system_error.rb +14 -0
- data/lib/graphql_rails/errors/validation_error.rb +1 -5
- data/lib/graphql_rails/input_configurable.rb +47 -0
- data/lib/graphql_rails/integrations.rb +19 -0
- data/lib/graphql_rails/integrations/lograge.rb +39 -0
- data/lib/graphql_rails/integrations/sentry.rb +34 -0
- data/lib/graphql_rails/model.rb +26 -4
- data/lib/graphql_rails/model/add_fields_to_graphql_type.rb +45 -0
- data/lib/graphql_rails/model/build_connection_type.rb +52 -0
- data/lib/graphql_rails/model/{configuration → build_connection_type}/count_items.rb +5 -5
- data/lib/graphql_rails/model/build_enum_type.rb +39 -10
- data/lib/graphql_rails/model/build_graphql_input_type.rb +8 -4
- data/lib/graphql_rails/model/call_graphql_model_method.rb +72 -0
- data/lib/graphql_rails/model/configurable.rb +6 -2
- data/lib/graphql_rails/model/configuration.rb +30 -16
- data/lib/graphql_rails/model/find_or_build_graphql_type.rb +64 -0
- data/lib/graphql_rails/model/find_or_build_graphql_type_class.rb +46 -0
- data/lib/graphql_rails/model/input.rb +11 -7
- data/lib/graphql_rails/query_runner.rb +68 -0
- data/lib/graphql_rails/railtie.rb +10 -0
- data/lib/graphql_rails/router.rb +40 -13
- data/lib/graphql_rails/router/resource_routes_builder.rb +10 -9
- data/lib/graphql_rails/router/route.rb +21 -6
- data/lib/graphql_rails/router/schema_builder.rb +30 -11
- data/lib/graphql_rails/rspec_controller_helpers.rb +6 -4
- data/lib/graphql_rails/tasks/dump_graphql_schema.rb +57 -0
- data/lib/graphql_rails/tasks/schema.rake +14 -0
- data/lib/graphql_rails/version.rb +1 -1
- metadata +70 -19
- data/lib/graphql_rails/controller/controller_function.rb +0 -50
- data/lib/graphql_rails/controller/format_results.rb +0 -36
- data/lib/graphql_rails/model/build_graphql_type.rb +0 -37
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'graphql_rails/controller/action'
|
4
|
-
require_relative 'request'
|
5
|
-
require_relative 'action'
|
6
|
-
|
7
|
-
module GraphqlRails
|
8
|
-
class Controller
|
9
|
-
# graphql resolver which redirects actions to appropriate controller and controller action
|
10
|
-
class ControllerFunction < GraphQL::Function
|
11
|
-
# accepts path of given format "controller_name#action"
|
12
|
-
attr_reader :type
|
13
|
-
|
14
|
-
def initialize(controller:, action_name:, type:)
|
15
|
-
@controller = controller
|
16
|
-
@action_name = action_name
|
17
|
-
@type = type
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.from_route(route)
|
21
|
-
action = Action.new(route)
|
22
|
-
|
23
|
-
action_function_class(action).new(
|
24
|
-
controller: action.controller,
|
25
|
-
action_name: action.name,
|
26
|
-
type: action.return_type
|
27
|
-
)
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.action_function_class(action)
|
31
|
-
Class.new(self) do
|
32
|
-
description(action.description)
|
33
|
-
|
34
|
-
action.arguments.each do |attribute|
|
35
|
-
argument(*attribute.function_argument_args)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def call(object, inputs, ctx)
|
41
|
-
request = Request.new(object, inputs, ctx)
|
42
|
-
controller.new(request).call(action_name)
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
attr_reader :controller, :action_name
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GraphqlRails
|
4
|
-
class Controller
|
5
|
-
# Convers raw controller results in to graphql-friendly format
|
6
|
-
class FormatResults
|
7
|
-
def initialize(original_result, action_config:, params:, graphql_context:)
|
8
|
-
@original_result = original_result
|
9
|
-
@action_config = action_config
|
10
|
-
@controller_params = params
|
11
|
-
@graphql_context = graphql_context
|
12
|
-
end
|
13
|
-
|
14
|
-
def call
|
15
|
-
if action_config.paginated? && original_result
|
16
|
-
paginated_result
|
17
|
-
else
|
18
|
-
original_result
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
attr_reader :original_result, :action_config, :controller_params, :graphql_context
|
25
|
-
|
26
|
-
def paginated_result
|
27
|
-
pagination_params = controller_params.slice(:first, :last, :before, :after)
|
28
|
-
pagination_options = action_config.pagination_options.merge(context: graphql_context)
|
29
|
-
|
30
|
-
GraphQL::Relay::BaseConnection
|
31
|
-
.connection_for_nodes(original_result)
|
32
|
-
.new(original_result, pagination_params, pagination_options)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GraphqlRails
|
4
|
-
module Model
|
5
|
-
# stores information about model specific config, like attributes and types
|
6
|
-
class BuildGraphqlType
|
7
|
-
def self.call(*args)
|
8
|
-
new(*args).call
|
9
|
-
end
|
10
|
-
|
11
|
-
def initialize(name:, description: nil, attributes:)
|
12
|
-
@name = name
|
13
|
-
@attributes = attributes
|
14
|
-
@description = description
|
15
|
-
end
|
16
|
-
|
17
|
-
def call
|
18
|
-
type_name = name
|
19
|
-
type_description = description
|
20
|
-
type_attributes = attributes
|
21
|
-
|
22
|
-
GraphQL::ObjectType.define do
|
23
|
-
name(type_name)
|
24
|
-
description(type_description)
|
25
|
-
|
26
|
-
type_attributes.each_value do |attribute|
|
27
|
-
field(*attribute.field_args)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
attr_reader :model_configuration, :attributes, :name, :description
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|