action_processor 0.0.7 → 0.0.8

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: 64fa3b91c6e4e1ba1b1c22b88404c392e20bebc0e97e0bbdd6cbeda579d0196c
4
- data.tar.gz: c935895a1d909da0a5b816e8e49a1b11b3ac9c363445cfb5cc73240bd7f45031
3
+ metadata.gz: cf58c5b403a2ec7095d1b43e07ea206596f7d324375d9cf5720f396b7a448e36
4
+ data.tar.gz: bb14d7a08d7cab44398433e7539046aa2398167866c1d8e8e4fe0e7c0fba1cc5
5
5
  SHA512:
6
- metadata.gz: 60fbc9a74750f6f4ead3129c2e8468dccc8b29762a0495f584bab4e91f7d8497cadcf1ad043107627813cb198cc6f0b262be620c37776ffc76294d81778d99c8
7
- data.tar.gz: 6d82167054ae4f5b3c7afe035f95379e4cbfa8b1e1484b142540ba8a084d9689c0b775517a04b33dcfe059e8bdbc55d2e3e43961757577a4dce47bca284d31d4
6
+ metadata.gz: 192243d4c626765a18bda4fa4949ad9a239ad85de7c7732e0f919dfd467b4b41b10f127c174b07d6daff41d59935997a3bede59ce5ebf1066ae385bd0e29cb12
7
+ data.tar.gz: 4cc79bb34950eefb80c32890d9239674d63e9b579928c4d053e9d5567a6473fd46fc343e7a0c3256c268d9b96b0ecbf8f60130aa38bbe327b5000a23c9462062
@@ -2,8 +2,9 @@
2
2
 
3
3
  require "active_support/core_ext/hash/indifferent_access"
4
4
  require "active_record"
5
+ require_relative "errors"
5
6
 
6
- module ActionProcessor
7
+ module ActionProcessor
7
8
  class Base
8
9
  attr_reader :params, :errors
9
10
 
@@ -14,11 +15,11 @@ module ActionProcessor
14
15
  end
15
16
 
16
17
  def initialize(params = {})
17
- @params = if params.class.name == 'Hash'
18
- params.with_indifferent_access
19
- else
20
- params
21
- end
18
+ @params = if params.instance_of? Hash
19
+ params.with_indifferent_access
20
+ else
21
+ params
22
+ end
22
23
  @errors = ActionProcessor::Errors.new
23
24
  @steps_stack = []
24
25
  @transaction_level = ActiveRecord::Base.connection.open_transactions
@@ -44,12 +45,12 @@ module ActionProcessor
44
45
 
45
46
  # in most cases should be overriden to provide relevant data
46
47
  def successful_json
47
- { success: true }
48
+ {success: true}
48
49
  end
49
50
 
50
51
  # could be overriden to provide some specifics/advices/etc.
51
52
  def failed_json
52
- { success: false, errors: errors.grouped_by_attribute }
53
+ {success: false, errors: errors.grouped_by_attribute}
53
54
  end
54
55
 
55
56
  def step(step_method, **options)
@@ -62,7 +63,7 @@ module ActionProcessor
62
63
  @steps_stack << (@current_step || :not_specified)
63
64
  @current_step = step_method
64
65
  # performs even if there are errors
65
- # useful for:
66
+ # useful for:
66
67
  # - validation steps to return list of all errors
67
68
  # - errors reporting and making decisions at the end of processing
68
69
  send step_method, **options
@@ -76,6 +77,8 @@ module ActionProcessor
76
77
  def fail!(errs, attr = :not_specified)
77
78
  if errs.class.ancestors.map(&:to_s).include?("ActiveRecord::Base")
78
79
  fail_active_record!(errs)
80
+ elsif errs.instance_of? ActionProcessor::Errors
81
+ @errors.concat errs
79
82
  else
80
83
  @errors.add(errs, @current_step, attr)
81
84
  end
@@ -92,7 +95,7 @@ module ActionProcessor
92
95
  @list_of_allowed_params ||= []
93
96
  @list_of_allowed_params += list.map(&:to_s)
94
97
  list.map(&:to_s).each do |param|
95
- next if params[param].present?
98
+ next unless params[param].nil?
96
99
 
97
100
  fail! "Parameter :#{param} should be present", param
98
101
  end
@@ -127,4 +130,4 @@ module ActionProcessor
127
130
  ActiveRecord::Base.connection.open_transactions > @transaction_level
128
131
  end
129
132
  end
130
- end
133
+ end
@@ -12,7 +12,12 @@ module ActionProcessor
12
12
 
13
13
  def add(messages, step = :not_specified, attribute = :not_specified)
14
14
  step ||= :not_specified # in case we will receive explicit nil as step parameter
15
- @all << { messages: [messages].flatten, step: step.to_sym, attribute: attribute.to_sym }
15
+ @all << {messages: [messages].flatten, step: step.to_sym, attribute: attribute.to_sym}
16
+ end
17
+
18
+ def concat(more_errors)
19
+ raise ArgumentError, "Expected an ActionProcessor::Errors object" unless more_errors.is_a?(ActionProcessor::Errors)
20
+ @all += more_errors.all
16
21
  end
17
22
 
18
23
  # returns array of strings with user friendly error messages
@@ -24,16 +29,16 @@ module ActionProcessor
24
29
  all_messages
25
30
  end
26
31
 
27
- alias full_messages messages # for compatibility with ActiveRecord::Errors
32
+ alias_method :full_messages, :messages # for compatibility with ActiveRecord::Errors
28
33
 
29
34
  def for_attribute(attr)
30
- @grouped_by_attribute[attr]
35
+ @grouped_by_attribute[attr]
31
36
  end
32
37
 
33
38
  def grouped_by_attribute
34
39
  return @grouped_by_attribute if @grouped_by_attribute.present?
35
40
 
36
- # we assume that all errors will be present
41
+ # we assume that all errors will be present
37
42
  # at the time when this method called first time
38
43
  @grouped_by_attribute = {}.with_indifferent_access
39
44
  @all.each do |err|
@@ -41,6 +46,6 @@ module ActionProcessor
41
46
  @grouped_by_attribute[err.attribute] += err[:messages]
42
47
  end
43
48
  @grouped_by_attribute
44
- end
49
+ end
45
50
  end
46
- end
51
+ end
@@ -1,2 +1,2 @@
1
- require_relative "./action_processor/errors.rb"
2
- require_relative "./action_processor/base.rb"
1
+ require_relative "action_processor/errors"
2
+ require_relative "action_processor/base"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ghennadii Mirosnicenco
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-02-26 00:00:00.000000000 Z
12
+ date: 2024-02-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 7.0.0
20
+ version: '7'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 7.0.0
27
+ version: '7'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 7.0.0
34
+ version: '7'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 7.0.0
41
+ version: '7'
42
42
  description: action_processor
43
43
  email: linkator7@gmail.com
44
44
  executables: []