ibrain-core 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/ibrain/base_controller.rb +12 -14
- data/app/controllers/ibrain/core/graphql_controller.rb +79 -83
- data/app/graphql/ibrain/base_schema.rb +50 -52
- data/app/graphql/ibrain/extentions/default_value.rb +7 -11
- data/app/graphql/ibrain/extentions/roles.rb +15 -20
- data/app/graphql/ibrain/extentions/session_required.rb +10 -14
- data/app/graphql/ibrain/lazy/base.rb +2 -6
- data/app/graphql/ibrain/loaders/association_loader.rb +51 -55
- data/app/graphql/ibrain/mutations/base_mutation.rb +52 -56
- data/app/graphql/ibrain/policies/base_policy.rb +43 -47
- data/app/graphql/ibrain/policies/graphql_policy.rb +2 -6
- data/app/graphql/ibrain/resolvers/base_aggregate.rb +6 -10
- data/app/graphql/ibrain/resolvers/base_resolver.rb +8 -12
- data/app/graphql/ibrain/types/aggregate_type.rb +4 -8
- data/app/graphql/ibrain/types/attribute_type.rb +2 -5
- data/app/graphql/ibrain/types/base_api_connection.rb +6 -10
- data/app/graphql/ibrain/types/base_api_edge.rb +4 -8
- data/app/graphql/ibrain/types/base_api_field.rb +7 -11
- data/app/graphql/ibrain/types/base_api_object.rb +6 -10
- data/app/graphql/ibrain/types/base_argument.rb +3 -7
- data/app/graphql/ibrain/types/base_connection.rb +7 -11
- data/app/graphql/ibrain/types/base_edge.rb +3 -7
- data/app/graphql/ibrain/types/base_enum.rb +1 -5
- data/app/graphql/ibrain/types/base_field.rb +6 -10
- data/app/graphql/ibrain/types/base_input_object.rb +6 -10
- data/app/graphql/ibrain/types/base_interface.rb +5 -9
- data/app/graphql/ibrain/types/base_object.rb +12 -16
- data/app/graphql/ibrain/types/base_scalar.rb +1 -5
- data/app/graphql/ibrain/types/base_type.rb +4 -10
- data/app/graphql/ibrain/types/base_union.rb +3 -7
- data/app/graphql/ibrain/types/filter_type.rb +1 -5
- data/app/graphql/ibrain/types/node_type.rb +4 -8
- data/app/graphql/ibrain/util/field_combiner.rb +5 -9
- data/app/graphql/ibrain/util/query_combiner.rb +4 -8
- data/app/models/concerns/ibrain/soft_deletable.rb +6 -8
- data/app/models/concerns/ibrain/user_api_authentication.rb +14 -16
- data/app/models/concerns/ibrain/user_methods.rb +11 -13
- data/app/models/ibrain/ability.rb +31 -32
- data/app/models/ibrain/aggregate.rb +5 -7
- data/app/models/ibrain/application_record.rb +2 -4
- data/app/models/ibrain/legacy_user.rb +7 -13
- data/app/models/ibrain/role.rb +6 -8
- data/app/models/ibrain/role_user.rb +8 -10
- data/app/repositories/ibrain/base_repository.rb +9 -11
- data/lib/generators/ibrain/core/model_generator.rb +17 -21
- data/lib/generators/ibrain/graphql/core.rb +55 -59
- data/lib/generators/ibrain/graphql/mutation_generator.rb +58 -66
- data/lib/generators/ibrain/graphql/object_generator.rb +58 -70
- data/lib/generators/ibrain/graphql/resolver_generator.rb +17 -25
- data/lib/generators/ibrain/graphql/resolvers_generator.rb +59 -67
- data/lib/generators/ibrain/graphql/templates/aggregate.erb +5 -7
- data/lib/generators/ibrain/graphql/templates/input.erb +5 -9
- data/lib/generators/ibrain/graphql/templates/mutation.erb +24 -26
- data/lib/generators/ibrain/graphql/templates/object.erb +6 -10
- data/lib/generators/ibrain/graphql/templates/resolver.erb +9 -11
- data/lib/generators/ibrain/graphql/templates/resolvers.erb +8 -10
- data/lib/generators/ibrain/graphql/type_generator.rb +84 -88
- data/lib/generators/ibrain/install/install_generator.rb +137 -140
- data/lib/generators/ibrain/install/templates/graphql/types/mutation_type.rb.tt +13 -15
- data/lib/generators/ibrain/install/templates/graphql/types/query_type.rb.tt +11 -13
- data/lib/generators/ibrain/install/templates/rubocop.yml.tt +83 -30
- data/lib/ibrain/app_configuration.rb +34 -36
- data/lib/ibrain/core/class_constantizer.rb +30 -33
- data/lib/ibrain/core/controller_helpers/auth.rb +53 -59
- data/lib/ibrain/core/controller_helpers/current_host.rb +5 -11
- data/lib/ibrain/core/controller_helpers/response.rb +43 -49
- data/lib/ibrain/core/controller_helpers/strong_parameters.rb +9 -15
- data/lib/ibrain/core/engine.rb +5 -9
- data/lib/ibrain/core/environment.rb +5 -9
- data/lib/ibrain/core/environment_extension.rb +13 -17
- data/lib/ibrain/core/role_configuration.rb +52 -54
- data/lib/ibrain/core/validators/email.rb +15 -17
- data/lib/ibrain/core/version.rb +2 -2
- data/lib/ibrain/core/versioned_value.rb +61 -65
- data/lib/ibrain/encryptor.rb +18 -20
- data/lib/ibrain/logger.rb +13 -15
- data/lib/ibrain/permission_sets/base.rb +22 -26
- data/lib/ibrain/permission_sets/super_user.rb +3 -7
- data/lib/ibrain/permitted_attributes.rb +18 -20
- data/lib/ibrain/preferences/configuration.rb +135 -137
- data/lib/ibrain/preferences/preferable.rb +158 -162
- data/lib/ibrain/preferences/preferable_class_methods.rb +112 -114
- data/lib/ibrain/user_class_handle.rb +22 -24
- metadata +2 -2
@@ -1,73 +1,69 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
input_object_class Types::BaseInputObject
|
9
|
-
object_class Types::BaseObject
|
3
|
+
class Ibrain::Mutations::BaseMutation < GraphQL::Schema::RelayClassicMutation
|
4
|
+
argument_class Types::BaseArgument
|
5
|
+
field_class Types::BaseField
|
6
|
+
input_object_class Types::BaseInputObject
|
7
|
+
object_class Types::BaseObject
|
10
8
|
|
11
|
-
|
12
|
-
|
9
|
+
argument :attribute, Types::AttributeType, required: false
|
10
|
+
argument :attributes, [Types::AttributeType], required: false
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
def ready?(args)
|
13
|
+
@params = ActionController::Parameters.new(
|
14
|
+
args.to_h.with_indifferent_access.transform_keys(&:underscore)
|
15
|
+
)
|
16
|
+
@resource = load_resource
|
17
|
+
true
|
18
|
+
end
|
21
19
|
|
22
|
-
|
20
|
+
protected
|
23
21
|
|
24
|
-
|
22
|
+
attr_reader :params, :resource
|
25
23
|
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
def upload_permitted
|
25
|
+
%i[content_type headers original_filename tempfile]
|
26
|
+
end
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
def cryptor
|
29
|
+
::Ibrain::Encryptor.new
|
30
|
+
end
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
def current_user
|
33
|
+
context[:current_user]
|
34
|
+
end
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
def controller
|
37
|
+
context[:controller]
|
38
|
+
end
|
41
39
|
|
42
|
-
|
43
|
-
|
44
|
-
|
40
|
+
def session
|
41
|
+
context[:session]
|
42
|
+
end
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
def request
|
45
|
+
context[:request]
|
46
|
+
end
|
49
47
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
48
|
+
def graphql_return
|
49
|
+
{
|
50
|
+
returning: resource.reload
|
51
|
+
}
|
52
|
+
end
|
55
53
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
def success_response
|
55
|
+
{
|
56
|
+
success: true
|
57
|
+
}
|
58
|
+
end
|
61
59
|
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
def id_from_params
|
61
|
+
params[:id]
|
62
|
+
end
|
65
63
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
64
|
+
def attribute_params
|
65
|
+
params[:attributes].to_params
|
66
|
+
rescue StandardError
|
67
|
+
ActionController::Parameters.new({})
|
72
68
|
end
|
73
|
-
end
|
69
|
+
end
|
@@ -1,51 +1,47 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
{
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
{
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
def not_authorized_handler(type, field)
|
46
|
-
rules.dig(type, field, :not_authorized) || rules.dig(type, :*, :not_authorized)
|
47
|
-
end
|
48
|
-
end
|
3
|
+
class Ibrain::Policies::BasePolicy
|
4
|
+
class << self
|
5
|
+
def query_rules
|
6
|
+
{
|
7
|
+
'*': {
|
8
|
+
guard: ->(_obj, _args, _ctx) { false }
|
9
|
+
}
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def mutation_rules
|
14
|
+
{
|
15
|
+
'*': {
|
16
|
+
guard: ->(_obj, _args, _ctx) { false }
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def rules
|
22
|
+
{
|
23
|
+
'Types::QueryType' => query_rules,
|
24
|
+
'Types::MutationType' => mutation_rules
|
25
|
+
}.freeze
|
26
|
+
end
|
27
|
+
|
28
|
+
def roles
|
29
|
+
Ibrain.user_class.roles.keys
|
30
|
+
end
|
31
|
+
|
32
|
+
def has_permission?(current_user, resource)
|
33
|
+
return false if current_user.blank?
|
34
|
+
return true if current_user.super_admin?
|
35
|
+
|
36
|
+
current_user.try(:scope).to_s.split(',').include?(resource)
|
37
|
+
end
|
38
|
+
|
39
|
+
def guard(type, field)
|
40
|
+
rules.dig(type.name, field, :guard)
|
41
|
+
end
|
42
|
+
|
43
|
+
def not_authorized_handler(type, field)
|
44
|
+
rules.dig(type, field, :not_authorized) || rules.dig(type, :*, :not_authorized)
|
49
45
|
end
|
50
46
|
end
|
51
|
-
end
|
47
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseAggregate < BaseResolver
|
6
|
-
type Ibrain::Types::BaseObject.connection_type, null: false
|
3
|
+
class Ibrain::Resolvers::BaseAggregate < BaseResolver
|
4
|
+
type Ibrain::Types::BaseObject.connection_type, null: false
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
6
|
+
argument :where, Ibrain::Types::FilterType, required: false, default_value: nil
|
7
|
+
argument :limit, Int, required: false, default_value: 10
|
8
|
+
argument :offset, Int, required: false, default_value: 0
|
9
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseResolver < GraphQL::Schema::Resolver
|
6
|
-
argument_class ::Ibrain::Types::BaseArgument
|
3
|
+
class Ibrain::Resolvers::BaseResolver < GraphQL::Schema::Resolver
|
4
|
+
argument_class ::Ibrain::Types::BaseArgument
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
def current_user
|
7
|
+
context.fetch(:current_user)
|
8
|
+
end
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
end
|
10
|
+
def controller
|
11
|
+
context[:controller]
|
16
12
|
end
|
17
|
-
end
|
13
|
+
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class AggregateType < BaseObject
|
6
|
-
graphql_name 'aggregate'
|
3
|
+
class Ibrain::Types::AggregateType < Ibrain::Types::BaseObject
|
4
|
+
graphql_name 'aggregate'
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|
6
|
+
field :count, Int, null: false
|
7
|
+
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
7
|
-
include GraphQL::Types::Relay::ConnectionBehaviors
|
3
|
+
class Ibrain::Types::BaseApiConnection < Ibrain::Types::BaseObject
|
4
|
+
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
5
|
+
include GraphQL::Types::Relay::ConnectionBehaviors
|
8
6
|
|
9
|
-
|
7
|
+
field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
def aggregate
|
10
|
+
Ibrain::Aggregate.new(object.items.size)
|
15
11
|
end
|
16
12
|
end
|
@@ -1,10 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
include GraphQL::Types::Relay::EdgeBehaviors
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
3
|
+
class Ibrain::Types::BaseApiEdge < Ibrain::Types::BaseObject
|
4
|
+
# add `node` and `cursor` fields, as well as `node_type(...)` override
|
5
|
+
include GraphQL::Types::Relay::EdgeBehaviors
|
6
|
+
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseApiField < GraphQL::Schema::Field
|
6
|
-
argument_class ::Ibrain::Types::BaseArgument
|
3
|
+
class Ibrain::Types::BaseApiField < GraphQL::Schema::Field
|
4
|
+
argument_class Ibrain::Types::BaseArgument
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
def initialize(*args, session_required: true, roles: nil, **kwargs, &block)
|
7
|
+
super(*args, camelize: false, **kwargs, &block)
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
extension(Ibrain::Extentions::SessionRequired, session_required: session_required) if session_required
|
10
|
+
extension(Ibrain::Extentions::Roles, roles: roles) if roles
|
15
11
|
end
|
16
|
-
end
|
12
|
+
end
|
@@ -1,14 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseApiObject < GraphQL::Schema::Object
|
6
|
-
include GraphQL::Relay::Node
|
3
|
+
class Ibrain::Types::BaseApiObject < GraphQL::Schema::Object
|
4
|
+
include GraphQL::Relay::Node
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
edge_type_class(Ibrain::Types::BaseApiEdge)
|
7
|
+
connection_type_class(Ibrain::Types::BaseApiConnection)
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
field_class Ibrain::Types::BaseApiField
|
10
|
+
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def initialize(*args, **kwargs, &block)
|
7
|
-
super(*args, camelize: false, **kwargs, &block)
|
8
|
-
end
|
9
|
-
end
|
3
|
+
class Ibrain::Types::BaseArgument < GraphQL::Schema::Argument
|
4
|
+
def initialize(*args, **kwargs, &block)
|
5
|
+
super(*args, camelize: false, **kwargs, &block)
|
10
6
|
end
|
11
7
|
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
7
|
-
include GraphQL::Types::Relay::ConnectionBehaviors
|
3
|
+
class Ibrain::Types::BaseConnection < Types::BaseObject
|
4
|
+
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
5
|
+
include GraphQL::Types::Relay::ConnectionBehaviors
|
8
6
|
|
9
|
-
|
7
|
+
field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
def aggregate
|
10
|
+
Ibrain::Aggregate.new(object.items.size)
|
15
11
|
end
|
16
|
-
end
|
12
|
+
end
|
@@ -1,10 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# add `node` and `cursor` fields, as well as `node_type(...)` override
|
7
|
-
include GraphQL::Types::Relay::EdgeBehaviors
|
8
|
-
end
|
9
|
-
end
|
3
|
+
class Ibrain::Types::BaseEdge < Types::BaseObject
|
4
|
+
# add `node` and `cursor` fields, as well as `node_type(...)` override
|
5
|
+
include GraphQL::Types::Relay::EdgeBehaviors
|
10
6
|
end
|
@@ -1,16 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseField < GraphQL::Schema::Field
|
6
|
-
argument_class ::Ibrain::Types::BaseArgument
|
3
|
+
class Ibrain::Types::BaseField < GraphQL::Schema::Field
|
4
|
+
argument_class Ibrain::Types::BaseArgument
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
def initialize(*args, default_value: nil, roles: nil, **kwargs, &block)
|
7
|
+
super(*args, camelize: false, **kwargs, &block)
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
extension(Ibrain::Extentions::DefaultValue, default_value: default_value) unless default_value.nil?
|
10
|
+
extension(Ibrain::Extentions::Roles, roles: roles) if roles
|
15
11
|
end
|
16
12
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseInputObject < GraphQL::Schema::InputObject
|
6
|
-
argument_class Ibrain::Types::BaseArgument
|
3
|
+
class Ibrain::Types::BaseInputObject < GraphQL::Schema::InputObject
|
4
|
+
argument_class Ibrain::Types::BaseArgument
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
6
|
+
def to_params
|
7
|
+
ActionController::Parameters.new(
|
8
|
+
to_h.with_indifferent_access.transform_keys(&:underscore)
|
9
|
+
)
|
14
10
|
end
|
15
11
|
end
|
@@ -1,14 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module Ibrain
|
4
|
-
|
5
|
-
module BaseInterface
|
6
|
-
include GraphQL::Schema::Interface
|
3
|
+
module Ibrain::Types::BaseInterface
|
4
|
+
include GraphQL::Schema::Interface
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
edge_type_class(Ibrain::Types::BaseEdge)
|
7
|
+
connection_type_class(Ibrain::Types::BaseConnection)
|
10
8
|
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
9
|
+
field_class Ibrain::Types::BaseField
|
14
10
|
end
|
@@ -1,26 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class BaseObject < GraphQL::Schema::Object
|
6
|
-
include GraphQL::Relay::Node
|
3
|
+
class Ibrain::Types::BaseObject < GraphQL::Schema::Object
|
4
|
+
include GraphQL::Relay::Node
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
edge_type_class(Ibrain::Types::BaseEdge)
|
7
|
+
connection_type_class(Ibrain::Types::BaseConnection)
|
10
8
|
|
11
|
-
|
9
|
+
field_class Ibrain::Types::BaseField
|
12
10
|
|
13
|
-
|
11
|
+
field :name, String, null: true
|
14
12
|
|
15
|
-
|
13
|
+
protected
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def loader
|
16
|
+
Ibrain::Loaders::AssociationLoader
|
17
|
+
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
19
|
+
def current_user
|
20
|
+
context.try(:fetch, :current_user)
|
25
21
|
end
|
26
22
|
end
|
@@ -1,13 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class
|
6
|
-
def self.graphql_name(name = "")
|
7
|
-
return name if name.present?
|
8
|
-
|
9
|
-
self.name.demodulize.gsub('Type', '').classify.constantize.table_name
|
10
|
-
end
|
11
|
-
end
|
3
|
+
class Ibrain::Types::BaseType < Ibrain::Types::BaseObject
|
4
|
+
def self.graphql_name
|
5
|
+
self.class.table_name
|
12
6
|
end
|
13
|
-
end
|
7
|
+
end
|
@@ -1,10 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
edge_type_class(Ibrain::Types::BaseEdge)
|
7
|
-
connection_type_class(Ibrain::Types::BaseConnection)
|
8
|
-
end
|
9
|
-
end
|
3
|
+
class Ibrain::Types::BaseUnion < GraphQL::Schema::Union
|
4
|
+
edge_type_class(Ibrain::Types::BaseEdge)
|
5
|
+
connection_type_class(Ibrain::Types::BaseConnection)
|
10
6
|
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module Ibrain
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# Add the `id` field
|
8
|
-
include GraphQL::Types::Relay::NodeBehaviors
|
9
|
-
end
|
10
|
-
end
|
3
|
+
module Ibrain::Types::NodeType
|
4
|
+
include Ibrain::Types::BaseInterface
|
5
|
+
# Add the `id` field
|
6
|
+
include GraphQL::Types::Relay::NodeBehaviors
|
11
7
|
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
Array(query_types).inject({}) do |acc, query_type|
|
8
|
-
acc.merge!(query_type.fields)
|
9
|
-
end
|
10
|
-
end
|
3
|
+
class Ibrain::Util::FieldCombiner
|
4
|
+
def self.combine(query_types)
|
5
|
+
Array(query_types).inject({}) do |acc, query_type|
|
6
|
+
acc.merge!(query_type.fields)
|
11
7
|
end
|
12
8
|
end
|
13
|
-
end
|
9
|
+
end
|