ibrain-core 0.3.5 → 0.3.7
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/app/controllers/ibrain/core/graphql_controller.rb +3 -3
- data/app/graphql/ibrain/resolvers/base_aggregate.rb +5 -1
- data/app/graphql/ibrain/resolvers/base_resolver.rb +0 -4
- data/app/graphql/ibrain/types/aggregate_type.rb +3 -1
- data/app/graphql/ibrain/types/base_api_connection.rb +3 -3
- data/app/graphql/ibrain/types/base_connection.rb +3 -3
- data/app/graphql/ibrain/types/base_object.rb +2 -0
- data/app/graphql/ibrain/types/base_type.rb +13 -0
- data/app/models/ibrain/aggregate.rb +11 -0
- data/lib/generators/ibrain/graphql/mutation_generator.rb +17 -6
- data/lib/generators/ibrain/graphql/resolver_generator.rb +1 -2
- data/lib/generators/ibrain/graphql/resolvers_generator.rb +18 -6
- data/lib/generators/ibrain/graphql/templates/mutation.erb +1 -1
- data/lib/generators/ibrain/graphql/templates/resolver.erb +2 -2
- data/lib/ibrain/core/version.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1208ea7c11b96ef277bcd34d9b8a1ff21b78c282c26a4e6c93d6ce3c73d3e303
|
4
|
+
data.tar.gz: 3989806e90af2f13d72ff04453dfc48f270e51ccb6d67d5bc9876cb475fab067
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 696a58668b7d169eaa712fcb729aa334b9e333df9849fdd578894f3ec6a451457eab9c5f2066f7e12fa245f6fe67a60af63e07b69649882fbacf81a42a02f5f0
|
7
|
+
data.tar.gz: 1aa43fb20f329d2a23e61bbd769f8ccc75b173c88febe9c6e3bdedecb69248926e9dd4c04e4fd3ba88ef8239475ef3c251681c72f6a41d55cb13fbfe6b4c4ccf
|
@@ -36,9 +36,9 @@ module Ibrain
|
|
36
36
|
return [params[:query], prepare_variables(params[:variables]), 'IntrospectionQuery'] if params[:query].try(:include?, 'IntrospectionQuery')
|
37
37
|
|
38
38
|
operations = prepare_variables(params[:operations])
|
39
|
-
query = operations['query']
|
40
|
-
variables = operations['variables']
|
41
|
-
operation_name = operations['operationName']
|
39
|
+
query = operations['query'] || params[:query]
|
40
|
+
variables = operations['variables'] || params[:variables]
|
41
|
+
operation_name = operations['operationName'] || params[:operationName]
|
42
42
|
|
43
43
|
if params[:map].present?
|
44
44
|
JSON.parse(params[:map]).each do |k, arguments|
|
@@ -3,7 +3,11 @@
|
|
3
3
|
module Ibrain
|
4
4
|
module Resolvers
|
5
5
|
class BaseAggregate < BaseResolver
|
6
|
-
type Ibrain::Types::
|
6
|
+
type Ibrain::Types::BaseObject.connection_type, null: false
|
7
|
+
|
8
|
+
argument :where, Ibrain::Types::FilterType, required: false, default_value: nil
|
9
|
+
argument :limit, Int, required: false, default_value: 10
|
10
|
+
argument :offset, Int, required: false, default_value: 0
|
7
11
|
end
|
8
12
|
end
|
9
13
|
end
|
@@ -5,10 +5,6 @@ module Ibrain
|
|
5
5
|
class BaseResolver < GraphQL::Schema::Resolver
|
6
6
|
argument_class ::Ibrain::Types::BaseArgument
|
7
7
|
|
8
|
-
argument :filter, Ibrain::Types::FilterType, required: false, default_value: nil
|
9
|
-
argument :limit, Int, required: false, default_value: 10
|
10
|
-
argument :offset, Int, required: false, default_value: 0
|
11
|
-
|
12
8
|
def current_user
|
13
9
|
context.fetch(:current_user)
|
14
10
|
end
|
@@ -6,10 +6,10 @@ module Ibrain
|
|
6
6
|
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
7
7
|
include GraphQL::Types::Relay::ConnectionBehaviors
|
8
8
|
|
9
|
-
field :
|
9
|
+
field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
|
10
10
|
|
11
|
-
def
|
12
|
-
object.items.size
|
11
|
+
def aggregate
|
12
|
+
Ibrain::Aggregate.new(object.items.size)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -6,10 +6,10 @@ module Ibrain
|
|
6
6
|
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
7
7
|
include GraphQL::Types::Relay::ConnectionBehaviors
|
8
8
|
|
9
|
-
field :
|
9
|
+
field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
|
10
10
|
|
11
|
-
def
|
12
|
-
object.items.size
|
11
|
+
def aggregate
|
12
|
+
Ibrain::Aggregate.new(object.items.size)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ibrain
|
4
|
+
module Types
|
5
|
+
class BaseType < BaseObject
|
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
|
12
|
+
end
|
13
|
+
end
|
@@ -18,6 +18,7 @@ module Ibrain
|
|
18
18
|
|
19
19
|
argument :name, type: :string
|
20
20
|
class_option :model, type: :string, default: nil
|
21
|
+
class_option :prefix, type: :string, default: nil
|
21
22
|
|
22
23
|
def initialize(args, *options) # :nodoc:
|
23
24
|
# Unfreeze name in case it's given as a frozen string
|
@@ -42,20 +43,30 @@ module Ibrain
|
|
42
43
|
|
43
44
|
template "mutation.erb", "#{options[:directory]}/mutations/#{file_name}.rb"
|
44
45
|
|
45
|
-
sentinel = /class .*MutationType\s*<\s*[^\s]+?\n/m
|
46
46
|
in_root do
|
47
47
|
gsub_file "#{options[:directory]}/types/mutation_type.rb", / \# TODO: Add Mutations as fields\s*\n/m, ""
|
48
|
-
inject_into_file "#{options[:directory]}/types/mutation_type.rb", " field :#{field_name}, mutation: Mutations::#{mutation_name}\n",
|
48
|
+
inject_into_file "#{options[:directory]}/types/mutation_type.rb", "\n field :#{field_name}, mutation: Mutations::#{mutation_name} \n ", before: "end\nend", verbose: true, force: true
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def assign_names!(name)
|
55
|
-
|
56
|
-
|
57
|
-
@
|
58
|
-
|
55
|
+
underscore_name = name&.camelize&.underscore
|
56
|
+
prefix = options[:prefix].try(:underscore)
|
57
|
+
@model_name = options[:model].blank? ? 'Post' : options[:model].try(:capitalize)
|
58
|
+
|
59
|
+
if prefix.blank?
|
60
|
+
@mutation_name = name.camelize(:upper)
|
61
|
+
@file_name = underscore_name
|
62
|
+
@field_name = underscore_name
|
63
|
+
|
64
|
+
return
|
65
|
+
end
|
66
|
+
|
67
|
+
@mutation_name = "#{prefix.try(:capitalize)}::#{name.camelize(:upper)}"
|
68
|
+
@file_name = "#{prefix}/#{underscore_name}"
|
69
|
+
@field_name = "#{prefix}_#{underscore_name}"
|
59
70
|
end
|
60
71
|
end
|
61
72
|
end
|
@@ -26,10 +26,9 @@ module Ibrain
|
|
26
26
|
|
27
27
|
template "resolver.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
|
28
28
|
|
29
|
-
sentinel = /class .*QueryType\s*<\s*[^\s]+?\n/m
|
30
29
|
in_root do
|
31
30
|
gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
|
32
|
-
inject_into_file "#{options[:directory]}/types/query_type.rb", " field :#{field_name}, resolver: Resolvers::#{resolver_name}\n
|
31
|
+
inject_into_file "#{options[:directory]}/types/query_type.rb", "\n field :#{field_name}, resolver: Resolvers::#{resolver_name} \n ", before: "end\nend", verbose: true, force: true
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -18,6 +18,7 @@ module Ibrain
|
|
18
18
|
|
19
19
|
argument :name, type: :string
|
20
20
|
class_option :model, type: :string, default: nil
|
21
|
+
class_option :prefix, type: :string, default: nil
|
21
22
|
|
22
23
|
def initialize(args, *options) # :nodoc:
|
23
24
|
# Unfreeze name in case it's given as a frozen string
|
@@ -43,20 +44,31 @@ module Ibrain
|
|
43
44
|
template "resolvers.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
|
44
45
|
template "aggregate.erb", "#{options[:directory]}/resolvers/#{file_name}_aggregate.rb"
|
45
46
|
|
46
|
-
sentinel = /class .*QueryType\s*<\s*[^\s]+?\n/m
|
47
47
|
in_root do
|
48
48
|
gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
|
49
|
-
inject_into_file "#{options[:directory]}/types/query_type.rb", " field :#{field_name}, resolver: Resolvers::#{resolver_name}\n field :#{field_name}_aggregate, resolver: Resolvers::#{resolver_name}Aggregate\n
|
49
|
+
inject_into_file "#{options[:directory]}/types/query_type.rb", "\n field :#{field_name}, resolver: Resolvers::#{resolver_name}\n field :#{field_name}_aggregate, resolver: Resolvers::#{resolver_name}Aggregate \n ", before: "end\nend", verbose: true, force: true
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
private
|
54
54
|
|
55
55
|
def assign_names!(name)
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@model_name = options[:model].blank? ? 'Post' : options[:model].capitalize
|
56
|
+
underscore_name = name&.camelize&.underscore
|
57
|
+
prefix = options[:prefix].try(:underscore)
|
58
|
+
|
59
|
+
@model_name = options[:model].blank? ? 'Post' : options[:model].try(:capitalize)
|
60
|
+
|
61
|
+
if prefix.blank?
|
62
|
+
@resolver_name = name.camelize(:upper)
|
63
|
+
@file_name = underscore_name
|
64
|
+
@field_name = underscore_name
|
65
|
+
|
66
|
+
return
|
67
|
+
end
|
68
|
+
|
69
|
+
@resolver_name = "#{prefix.try(:capitalize)}::#{name.camelize(:upper)}"
|
70
|
+
@file_name = "#{prefix}/#{underscore_name}"
|
71
|
+
@field_name = "#{prefix}_#{underscore_name}"
|
60
72
|
end
|
61
73
|
end
|
62
74
|
end
|
@@ -7,7 +7,7 @@ module Mutations
|
|
7
7
|
# description
|
8
8
|
|
9
9
|
# TODO: define return fields
|
10
|
-
field :<%= model_name.underscore %>, Types::<%= model_name %>Type, null: false, description: 'Record Type for mutation response'
|
10
|
+
field :<%= model_name.underscore %>, Types::Objects::<%= model_name %>Type, null: false, description: 'Record Type for mutation response'
|
11
11
|
|
12
12
|
# TODO: define arguments
|
13
13
|
# argument :name, String, required: true
|
@@ -9,11 +9,11 @@ module Resolvers
|
|
9
9
|
# TODO: define return fields
|
10
10
|
type Types::Objects::<%= model_name.capitalize %>Type, null: false
|
11
11
|
|
12
|
-
argument :id, ID, required:
|
12
|
+
argument :id, ID, required: true, description: 'TODO: describe about this argument'
|
13
13
|
|
14
14
|
# TODO: define resolve method
|
15
15
|
def resolve(args)
|
16
|
-
<%= model_name.capitalize %>Repository.find
|
16
|
+
<%= model_name.capitalize %>Repository.find(args)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/lib/ibrain/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibrain-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tai Nguyen Van
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-session_store
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- app/graphql/ibrain/types/base_node.rb
|
209
209
|
- app/graphql/ibrain/types/base_object.rb
|
210
210
|
- app/graphql/ibrain/types/base_scalar.rb
|
211
|
+
- app/graphql/ibrain/types/base_type.rb
|
211
212
|
- app/graphql/ibrain/types/base_union.rb
|
212
213
|
- app/graphql/ibrain/types/filter_type.rb
|
213
214
|
- app/graphql/ibrain/types/node_type.rb
|
@@ -218,6 +219,7 @@ files:
|
|
218
219
|
- app/models/concerns/ibrain/user_api_authentication.rb
|
219
220
|
- app/models/concerns/ibrain/user_methods.rb
|
220
221
|
- app/models/ibrain/ability.rb
|
222
|
+
- app/models/ibrain/aggregate.rb
|
221
223
|
- app/models/ibrain/application_record.rb
|
222
224
|
- app/models/ibrain/base.rb
|
223
225
|
- app/models/ibrain/legacy_user.rb
|