ibrain-core 0.4.0 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32e7f7587c35fbd6a0418ddc3a68d557d8c5e06e3108f93f83269e84f655f119
4
- data.tar.gz: 71ed276d87fe72d9a0b0ddeab4ffb326898e6339702e6cf67020e4a1ed118fa6
3
+ metadata.gz: 26a30919c92210c8aee940c6eef87714f5f32fd072af49c171af08018f532b1e
4
+ data.tar.gz: 35355d0e6193503c2d58547ac5c0919650ecadf3784a0a446c8794108c53bd30
5
5
  SHA512:
6
- metadata.gz: 20b9c68ba3d42d1a655990b88aa570a3aa67bf93c706db8182b6e0cbd8f89aa4845b004065d6de5abfb4e5ca516c1e280a1b001d49d5b8b36a31890590d5e57c
7
- data.tar.gz: 42476c629594393be8463e800646adeecf91967c3b01399632b99d7bd6d1c1dcdd8a25ac2dc40235c7f77afcb7fbe4a10646e3db3fa8c262838aeaffb8415e28
6
+ metadata.gz: cc5f54d06be873dc940b18819bb5490fcd58c0a7582b08853694e3b508a94f154a5288894e43e2d96f9b9cdb9601a18149b2538ca7d3427ff4078f351d79935a
7
+ data.tar.gz: d82ae0620f53243f1958d79e0b80ed81c55403d94a3138c7307a44043f0e8a6aa6edfdabc4c99fb0c2033c172fe27572ff5bf52c9a28ceec359bb16156243b13
@@ -11,13 +11,17 @@ module Ibrain
11
11
  argument :attribute, Types::AttributeType, required: false
12
12
  argument :attributes, [Types::AttributeType], required: false
13
13
 
14
- def resolve(args)
15
- @params = ::ActionController::Parameters.new(args)
14
+ def ready?(args)
15
+ @params = ActionController::Parameters.new(
16
+ args.to_h.with_indifferent_access.transform_keys(&:underscore)
17
+ )
18
+ @resource = load_resource
19
+ true
16
20
  end
17
21
 
18
22
  protected
19
23
 
20
- attr_reader :params
24
+ attr_reader :params, :resource
21
25
 
22
26
  def upload_permitted
23
27
  %i[content_type headers original_filename tempfile]
@@ -42,6 +46,28 @@ module Ibrain
42
46
  def request
43
47
  context[:request]
44
48
  end
49
+
50
+ def graphql_return
51
+ {
52
+ returning: resource.reload
53
+ }
54
+ end
55
+
56
+ def success_response
57
+ {
58
+ success: true
59
+ }
60
+ end
61
+
62
+ def id_from_params
63
+ params[:id]
64
+ end
65
+
66
+ def attribute_params
67
+ params[:attributes].to_params
68
+ rescue StandardError
69
+ ActionController::Parameters.new({})
70
+ end
45
71
  end
46
72
  end
47
73
  end
@@ -11,6 +11,16 @@ module Ibrain
11
11
  field_class ::Ibrain::Types::BaseField
12
12
 
13
13
  field :name, String, null: true
14
+
15
+ protected
16
+
17
+ def loader
18
+ Ibrain::Loaders::AssociationLoader
19
+ end
20
+
21
+ def current_user
22
+ context.try(:fetch, :current_user)
23
+ end
14
24
  end
15
25
  end
16
26
  end
@@ -42,6 +42,7 @@ module Ibrain
42
42
  end
43
43
 
44
44
  template "mutation.erb", "#{options[:directory]}/mutations/#{file_name}.rb"
45
+ return unless ::Ibrain::Config.is_auto_append_mutation
45
46
 
46
47
  in_root do
47
48
  gsub_file "#{options[:directory]}/types/mutation_type.rb", / \# TODO: Add Mutations as fields\s*\n/m, ""
@@ -25,6 +25,7 @@ module Ibrain
25
25
  end
26
26
 
27
27
  template "resolver.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
28
+ return unless ::Ibrain::Config.is_auto_append_mutation
28
29
 
29
30
  in_root do
30
31
  gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
@@ -43,6 +43,7 @@ module Ibrain
43
43
 
44
44
  template "resolvers.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
45
45
  template "aggregate.erb", "#{options[:directory]}/resolvers/#{file_name}_aggregate.rb"
46
+ return unless ::Ibrain::Config.is_auto_append_mutation
46
47
 
47
48
  in_root do
48
49
  gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
@@ -7,16 +7,37 @@ module Mutations
7
7
  # description
8
8
 
9
9
  # TODO: define return fields
10
- field :<%= model_name.underscore %>, Types::Objects::<%= model_name %>Type, null: false, description: 'Record Type for mutation response'
10
+ field :returning, Types::Objects::<%= model_name %>Type, null: true, description: 'Record Type for mutation response'
11
11
 
12
12
  # TODO: define arguments
13
13
  # argument :name, String, required: true
14
- # argument :<%= model_name.underscore %>, Types::Attributes::<%= model_name %>Input, required: true
14
+ argument :attributes, Types::Attributes::<%= model_name %>Input, required: true
15
+ # argument :id, ID, required: true
15
16
 
16
17
  # TODO: define resolve method
17
18
  def resolve(args)
18
19
  # TODO: define logic inside repository
19
- # Something like Repository.new(current_user, Post.new).create(args)
20
+ # Something like
21
+ # if resource.blank?
22
+ # raise GraphQL::ExecutionError, I18n.t("activerecord.errors.models.job.attributes.id.could_not_find")
23
+ # end
24
+
25
+ # repo.update(normalize_parameters)
26
+ graphql_return
27
+ end
28
+
29
+ private
30
+
31
+ def normalize_parameters
32
+ # attribute_params.permit(:name, :status)
33
+ end
34
+
35
+ def load_resource
36
+ # <%= model_name %>.find_by(id: id_from_params)
37
+ end
38
+
39
+ def repo
40
+ # <%= model_name %>Repository.new(current_user, resource)
20
41
  end
21
42
  end
22
43
  end
@@ -50,6 +50,9 @@ Ibrain.config do |config|
50
50
 
51
51
  # For max depth graphql
52
52
  config.graphql_max_depth = 3
53
+
54
+ # For auto append mutation to graphql
55
+ config.is_auto_append_mutation = true
53
56
  end
54
57
 
55
58
  <% if defined?(Ibrain::Api::Engine) -%>
@@ -55,6 +55,8 @@ module Ibrain
55
55
 
56
56
  preference :graphql_max_depth, :integer, default: 3
57
57
 
58
+ preference :is_auto_append_mutation, :boolean, default: true
59
+
58
60
  def static_model_preferences
59
61
  @static_model_preferences ||= Ibrain::Preferences::StaticModelPreferences.new
60
62
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ibrain
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.3"
5
5
 
6
6
  def self.ibrain_version
7
7
  VERSION
8
8
  end
9
9
 
10
10
  def self.previous_ibrain_minor_version
11
- '0.3.9'
11
+ '0.4.2'
12
12
  end
13
13
 
14
14
  def self.ibrain_gem_version
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.4.0
4
+ version: 0.4.3
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-08-04 00:00:00.000000000 Z
11
+ date: 2022-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-session_store
@@ -308,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
308
308
  - !ruby/object:Gem::Version
309
309
  version: '0'
310
310
  requirements: []
311
- rubygems_version: 3.3.7
311
+ rubygems_version: 3.3.20
312
312
  signing_key:
313
313
  specification_version: 4
314
314
  summary: Its Core is an sso authen gem for Ruby on Rails.